Mercurial > emacs
annotate lisp/dired-x.el @ 106768:21fd634f447a
Make line<->pixel_y conversion macros aware of native menu/tool bars.
They are placed above the internal border. This supersedes special
treatment of native tool bars in the display code.
This fixes wrong display position of native menu bars and bogus mouse
highlighting of native tool bars, both of which can be found when
internal border width is large. Also it fixes wrong flashed part on
visible bell with native menu bars.
* frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro.
(FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo
windows above internal border.
* window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros.
(WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo
windows above internal border.
* xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat
tool bar windows specially.
* xfns.c (x_set_tool_bar_lines): Take account of menu bar height.
* xterm.c (x_after_update_window_line): Don't treat tool bar windows
specially.
(XTflash): Take account of menu bar height.
* w32term.c (x_after_update_window_line): Don't treat tool bar windows
specially.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sat, 09 Jan 2010 13:16:32 +0900 |
parents | 97b90713fd52 |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
104943
eb30601bacc5
Put autoloads in dired.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents:
102265
diff
changeset
|
1 ;;; dired-x.el --- extra Dired functionality |
5426 | 2 |
97628
c27cf1a5f2f6
(dired-guess-shell-alist-default): Add .mp3 and .ogg.
Glenn Morris <rgm@gnu.org>
parents:
94762
diff
changeset
|
3 ;; Copyright (C) 1993, 1994, 1997, 2001, 2002, 2003, 2004, 2005, 2006, |
100908 | 4 ;; 2007, 2008, 2009 Free Software Foundation, Inc. |
86529
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
5 |
5426 | 6 ;; Author: Sebastian Kremer <sk@thp.uni-koeln.de> |
7 ;; Lawrence R. Dodd <dodd@roebling.poly.edu> | |
66469
8c968e06d0c0
Change Maintainer field.
Romain Francoise <romain@orebokech.com>
parents:
66437
diff
changeset
|
8 ;; Maintainer: Romain Francoise <rfrancoise@gnu.org> |
39014
7d409173c4ac
Add keyword files to get listed in finder.
Gerd Moellmann <gerd@gnu.org>
parents:
35094
diff
changeset
|
9 ;; Keywords: dired extensions files |
5426 | 10 |
11 ;; This file is part of GNU Emacs. | |
12 | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94557
diff
changeset
|
13 ;; GNU Emacs is free software: you can redistribute it and/or modify |
5426 | 14 ;; it under the terms of the GNU General Public License as published by |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94557
diff
changeset
|
15 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94557
diff
changeset
|
16 ;; (at your option) any later version. |
5426 | 17 |
18 ;; GNU Emacs is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 | |
23 ;; You should have received a copy of the GNU General Public License | |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94557
diff
changeset
|
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
5426 | 25 |
6694 | 26 ;;; Commentary: |
5426 | 27 |
14169 | 28 ;; This is Sebastian Kremer's excellent dired-x.el (Dired Extra), version |
39014
7d409173c4ac
Add keyword files to get listed in finder.
Gerd Moellmann <gerd@gnu.org>
parents:
35094
diff
changeset
|
29 ;; 1.191, hacked up for GNU Emacs. Redundant or conflicting material has |
7d409173c4ac
Add keyword files to get listed in finder.
Gerd Moellmann <gerd@gnu.org>
parents:
35094
diff
changeset
|
30 ;; been removed or renamed in order to work properly with dired of GNU |
7d409173c4ac
Add keyword files to get listed in finder.
Gerd Moellmann <gerd@gnu.org>
parents:
35094
diff
changeset
|
31 ;; Emacs. All suggestions or comments are most welcomed. |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
32 |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49485
diff
changeset
|
33 ;; |
14169 | 34 ;; Please, PLEASE, *PLEASE* see the info pages. |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
49485
diff
changeset
|
35 ;; |
14169 | 36 |
37 ;; BUGS: Type M-x dired-x-submit-report and a report will be generated. | |
5426 | 38 |
14169 | 39 ;; INSTALLATION: In your ~/.emacs, |
40 ;; | |
41 ;; (add-hook 'dired-load-hook | |
42 ;; (function (lambda () | |
43 ;; (load "dired-x") | |
77627
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
44 ;; ;; Set global variables here. For example: |
14169 | 45 ;; ;; (setq dired-guess-shell-gnutar "gtar") |
77627
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
46 ;; ))) |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
47 ;; (add-hook 'dired-mode-hook |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
48 ;; (function (lambda () |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
49 ;; ;; Set buffer-local variables here. For example: |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
50 ;; ;; (dired-omit-mode 1) |
14169 | 51 ;; ))) |
52 ;; | |
53 ;; At load time dired-x.el will install itself, redefine some functions, and | |
54 ;; bind some dired keys. *Please* see the info pages for more details. | |
5426 | 55 |
35032 | 56 ;; *Please* see the info pages for more details. |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
57 |
14169 | 58 ;; User defined variables: |
59 ;; | |
60 ;; dired-bind-vm | |
61 ;; dired-vm-read-only-folders | |
62 ;; dired-bind-jump | |
63 ;; dired-bind-info | |
64 ;; dired-bind-man | |
35032 | 65 ;; dired-x-hands-off-my-keys |
14169 | 66 ;; dired-find-subdir |
67 ;; dired-enable-local-variables | |
68 ;; dired-local-variables-file | |
69 ;; dired-guess-shell-gnutar | |
70 ;; dired-guess-shell-gzip-quiet | |
71 ;; dired-guess-shell-znew-switches | |
72 ;; dired-guess-shell-alist-user | |
73 ;; dired-clean-up-buffers-too | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
74 ;; dired-omit-mode |
14169 | 75 ;; dired-omit-files |
76 ;; dired-omit-extensions | |
16617
19b2aeb694d1
(dired-omit-size-limit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16558
diff
changeset
|
77 ;; dired-omit-size-limit |
14169 | 78 ;; |
79 ;; To find out more about these variables, load this file, put your cursor at | |
80 ;; the end of any of the variable names, and hit C-h v [RET]. *Please* see | |
81 ;; the info pages for more details. | |
5426 | 82 |
14169 | 83 ;; When loaded this code redefines the following functions of GNU Emacs |
84 ;; | |
85 ;; Function Found in this file of GNU Emacs | |
86 ;; -------- ------------------------------- | |
87 ;; dired-clean-up-after-deletion ../lisp/dired.el | |
88 ;; dired-find-buffer-nocreate ../lisp/dired.el | |
89 ;; dired-initial-position ../lisp/dired.el | |
90 ;; | |
91 ;; dired-add-entry ../lisp/dired-aux.el | |
92 ;; dired-read-shell-command ../lisp/dired-aux.el | |
5426 | 93 |
94 | |
14169 | 95 ;;; Code: |
5426 | 96 |
14169 | 97 ;; LOAD. |
5426 | 98 |
14169 | 99 ;; This is a no-op if dired-x is being loaded via `dired-load-hook'. It is |
100 ;; here in case the user has autoloaded dired-x via the dired-jump key binding | |
101 ;; (instead of autoloading to dired as is suggested in the info-pages). | |
6694 | 102 |
7839
eb9d06dba04b
Require dired and dired-aux in the standard way.
Richard M. Stallman <rms@gnu.org>
parents:
7700
diff
changeset
|
103 (require 'dired) |
6694 | 104 |
14169 | 105 ;; We will redefine some functions and also need some macros so we need to |
106 ;; load dired stuff of GNU Emacs. | |
5426 | 107 |
7839
eb9d06dba04b
Require dired and dired-aux in the standard way.
Richard M. Stallman <rms@gnu.org>
parents:
7700
diff
changeset
|
108 (require 'dired-aux) |
6694 | 109 |
65288
12202e62be76
(vm-folder-directory): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
64762
diff
changeset
|
110 (defvar vm-folder-directory) |
66868
ccb8ee5226d6
If `vm-visit-folder' doesn't exist, define it as a dummy function in
Romain Francoise <romain@orebokech.com>
parents:
66659
diff
changeset
|
111 (eval-when-compile (require 'man)) |
65288
12202e62be76
(vm-folder-directory): Add defvar.
Juanma Barranquero <lekktu@gmail.com>
parents:
64762
diff
changeset
|
112 |
14169 | 113 ;;; User-defined variables. |
5426 | 114 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
115 (defgroup dired-x nil |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
116 "Extended directory editing (dired-x)." |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
117 :group 'dired) |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
118 |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
119 (defgroup dired-keys nil |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
120 "Dired keys customizations." |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
121 :prefix "dired-" |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
122 :group 'dired-x) |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
123 |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
124 (defcustom dired-bind-vm nil |
100171 | 125 "Non-nil means \"V\" runs `dired-vm', otherwise \"V\" runs `dired-rmail'. |
101541 | 126 |
127 RMAIL files in the old Babyl format (used before before Emacs 23.1) | |
128 contain \"-*- rmail -*-\" at the top, so `dired-find-file' | |
129 will run `rmail' on these files. New RMAIL files use the standard | |
130 mbox format, and so cannot be distinguished in this way." | |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
131 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
132 :group 'dired-keys) |
5426 | 133 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
134 (defcustom dired-bind-jump t |
100171 | 135 "Non-nil means bind `dired-jump' to C-x C-j, otherwise do not." |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
136 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
137 :group 'dired-keys) |
5426 | 138 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
139 (defcustom dired-bind-man t |
100171 | 140 "Non-nil means bind `dired-man' to \"N\" in dired-mode, otherwise do not." |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
141 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
142 :group 'dired-keys) |
5426 | 143 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
144 (defcustom dired-bind-info t |
100171 | 145 "Non-nil means bind `dired-info' to \"I\" in dired-mode, otherwise do not." |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
146 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
147 :group 'dired-keys) |
5426 | 148 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
149 (defcustom dired-vm-read-only-folders nil |
100171 | 150 "If non-nil, \\[dired-vm] will visit all folders read-only. |
5426 | 151 If neither nil nor t, e.g. the symbol `if-file-read-only', only |
152 files not writable by you are visited read-only. | |
153 | |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
154 Read-only folders only work in VM 5, not in VM 4." |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
155 :type '(choice (const :tag "off" nil) |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
156 (const :tag "on" t) |
22574
3c7216baafaf
(dired-vm-read-only-folders): Use `other' widget
Andreas Schwab <schwab@suse.de>
parents:
22177
diff
changeset
|
157 (other :tag "non-writable only" if-file-read-only)) |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
158 :group 'dired-x) |
5426 | 159 |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
160 (define-minor-mode dired-omit-mode |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
161 "Toggle Dired-Omit mode. |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
162 With numeric ARG, enable Dired-Omit mode if ARG is positive, disable |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
163 otherwise. Enabling and disabling is buffer-local. |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
164 If enabled, \"uninteresting\" files are not listed. |
5426 | 165 Uninteresting files are those whose filenames match regexp `dired-omit-files', |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
166 plus those ending with extensions in `dired-omit-extensions'." |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
167 :group 'dired-x |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
168 (if dired-omit-mode |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
169 ;; This will mention how many lines were omitted: |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
170 (let ((dired-omit-size-limit nil)) (dired-omit-expunge)) |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
171 (revert-buffer))) |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
172 |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
173 ;; For backward compatibility |
94148
be53eb871301
(dired-omit-files-p): Use `define-obsolete-variable-alias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
87649
diff
changeset
|
174 (define-obsolete-variable-alias 'dired-omit-files-p 'dired-omit-mode "22.1") |
5426 | 175 |
18838
6f9fa4c8e92a
(dired-omit-files): Add ".#foo" lock files to omissions.
Richard M. Stallman <rms@gnu.org>
parents:
17944
diff
changeset
|
176 (defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$" |
100171 | 177 "Filenames matching this regexp will not be displayed. |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
178 This only has effect when `dired-omit-mode' is t. See interactive function |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
179 `dired-omit-mode' \(\\[dired-omit-mode]\) and variable |
18838
6f9fa4c8e92a
(dired-omit-files): Add ".#foo" lock files to omissions.
Richard M. Stallman <rms@gnu.org>
parents:
17944
diff
changeset
|
180 `dired-omit-extensions'. The default is to omit `.', `..', auto-save |
6f9fa4c8e92a
(dired-omit-files): Add ".#foo" lock files to omissions.
Richard M. Stallman <rms@gnu.org>
parents:
17944
diff
changeset
|
181 files and lock files." |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
182 :type 'regexp |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
183 :group 'dired-x) |
5426 | 184 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
185 (defcustom dired-find-subdir nil ; t is pretty near to DWIM... |
100171 | 186 "If non-nil, Dired always finds a directory in a buffer of its own. |
9707
6349d2705e2a
(dired-find-subdir): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9061
diff
changeset
|
187 If nil, Dired finds the directory as a subdirectory in some other buffer |
6349d2705e2a
(dired-find-subdir): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
9061
diff
changeset
|
188 if it is present as one. |
5426 | 189 |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
190 If there are several dired buffers for a directory, the most recently |
5426 | 191 used is chosen. |
192 | |
193 Dired avoids switching to the current buffer, so that if you have | |
35032 | 194 a normal and a wildcard buffer for the same directory, \\[dired] will |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
195 toggle between those two." |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
196 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
197 :group 'dired-x) |
5426 | 198 |
22688
c952205ba590
(dired-omit-expunge): Message if skipping omitting
Richard M. Stallman <rms@gnu.org>
parents:
22574
diff
changeset
|
199 (defcustom dired-omit-size-limit 30000 |
100171 | 200 "Maximum size for the \"omitting\" feature. |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
201 If nil, there is no maximum size." |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
202 :type '(choice (const :tag "no maximum" nil) integer) |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
203 :group 'dired-x) |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
204 |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
205 (defcustom dired-enable-local-variables t |
100171 | 206 "Control use of local-variables lists in Dired. |
5426 | 207 The value can be t, nil or something else. |
208 A value of t means local-variables lists are obeyed; | |
209 nil means they are ignored; anything else means query. | |
210 | |
105170 | 211 This temporarily overrides the value of `enable-local-variables' when |
212 listing a directory. See also `dired-local-variables-file'." | |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
213 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
214 :group 'dired-x) |
5426 | 215 |
70664
002eb5def536
(dired-guess-shell-gnutar): On GNU and GNU/Linux
Romain Francoise <romain@orebokech.com>
parents:
68748
diff
changeset
|
216 (defcustom dired-guess-shell-gnutar (when (or (eq system-type 'gnu) |
002eb5def536
(dired-guess-shell-gnutar): On GNU and GNU/Linux
Romain Francoise <romain@orebokech.com>
parents:
68748
diff
changeset
|
217 (eq system-type 'gnu/linux)) |
002eb5def536
(dired-guess-shell-gnutar): On GNU and GNU/Linux
Romain Francoise <romain@orebokech.com>
parents:
68748
diff
changeset
|
218 "tar") |
100171 | 219 "If non-nil, name of GNU tar executable. |
35032 | 220 \(E.g., \"tar\" or \"gtar\"). The `z' switch will be used with it for |
221 compressed or gzip'ed tar files. If you don't have GNU tar, set this | |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
222 to nil: a pipe using `zcat' or `gunzip -c' will be used." |
35032 | 223 :type '(choice (const :tag "Not GNU tar" nil) |
224 (string :tag "Command name")) | |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
225 :group 'dired-x) |
5426 | 226 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
227 (defcustom dired-guess-shell-gzip-quiet t |
100171 | 228 "Non-nil says pass -q to gzip overriding verbose GZIP environment." |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
229 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
230 :group 'dired-x) |
5426 | 231 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
232 (defcustom dired-guess-shell-znew-switches nil |
100171 | 233 "If non-nil, then string of switches passed to `znew', example: \"-K\"." |
35032 | 234 :type '(choice (const :tag "None" nil) |
235 (string :tag "Switches")) | |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
236 :group 'dired-x) |
5426 | 237 |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
238 (defcustom dired-clean-up-buffers-too t |
100171 | 239 "Non-nil means offer to kill buffers visiting files and dirs deleted in Dired." |
17944
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
240 :type 'boolean |
0714535d0e28
Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents:
16959
diff
changeset
|
241 :group 'dired-x) |
5426 | 242 |
14169 | 243 ;;; KEY BINDINGS. |
5426 | 244 |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
245 (define-key dired-mode-map "\M-o" 'dired-omit-mode) |
56060
7296de1b215f
(dired-mark-omitted): Bind to "*O".
Lars Hansen <larsh@soem.dk>
parents:
55927
diff
changeset
|
246 (define-key dired-mode-map "*O" 'dired-mark-omitted) |
5426 | 247 (define-key dired-mode-map "\M-(" 'dired-mark-sexp) |
16499
821597d16a55
(dired-mode-map): Put dired-mark-extension on *.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
248 (define-key dired-mode-map "*(" 'dired-mark-sexp) |
821597d16a55
(dired-mode-map): Put dired-mark-extension on *.
Richard M. Stallman <rms@gnu.org>
parents:
14169
diff
changeset
|
249 (define-key dired-mode-map "*." 'dired-mark-extension) |
5426 | 250 (define-key dired-mode-map "\M-!" 'dired-smart-shell-command) |
251 (define-key dired-mode-map "w" 'dired-copy-filename-as-kill) | |
252 (define-key dired-mode-map "\M-G" 'dired-goto-subdir) | |
253 (define-key dired-mode-map "F" 'dired-do-find-marked-files) | |
254 (define-key dired-mode-map "Y" 'dired-do-relsymlink) | |
255 (define-key dired-mode-map "%Y" 'dired-do-relsymlink-regexp) | |
256 (define-key dired-mode-map "V" 'dired-do-run-mail) | |
257 | |
258 (if dired-bind-man | |
259 (define-key dired-mode-map "N" 'dired-man)) | |
260 | |
261 (if dired-bind-info | |
262 (define-key dired-mode-map "I" 'dired-info)) | |
263 | |
66659
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
264 ;;; MENU BINDINGS |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
265 |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
266 (let ((menu-bar (lookup-key dired-mode-map [menu-bar]))) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
267 (let ((menu (lookup-key menu-bar [operate]))) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
268 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
269 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
270 [find-files] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
271 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
272 "Find files" |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
273 dired-do-find-marked-files |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
274 :help "Find current or marked files") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
275 'delete) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
276 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
277 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
278 [relsymlink] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
279 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
280 "Relative symlink to..." |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
281 dired-do-relsymlink |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
282 :visible (fboundp 'make-symbolic-link) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
283 :help "Make relative symbolic links for current or marked files") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
284 'symlink)) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
285 (let ((menu (lookup-key menu-bar [mark]))) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
286 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
287 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
288 [flag-extension] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
289 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
290 "Flag extension..." |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
291 dired-flag-extension |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
292 :help "Flag files with a certain extension for deletion") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
293 'garbage-files) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
294 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
295 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
296 [mark-extension] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
297 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
298 "Mark extension..." |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
299 dired-mark-extension |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
300 :help "Mark files with a certain extension") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
301 'symlinks) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
302 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
303 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
304 [mark-omitted] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
305 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
306 "Mark omitted" |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
307 dired-mark-omitted |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
308 :help "Mark files matching `dired-omit-files' and `dired-omit-extensions'") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
309 'mark-extension)) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
310 (let ((menu (lookup-key menu-bar [regexp]))) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
311 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
312 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
313 [relsymlink-regexp] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
314 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
315 "Relative symlink..." |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
316 dired-do-relsymlink-regexp |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
317 :visible (fboundp 'make-symbolic-link) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
318 :help "Make relative symbolic links for files matching regexp") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
319 'symlink)) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
320 (let ((menu (lookup-key menu-bar [immediate]))) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
321 (define-key-after |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
322 menu |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
323 [omit-mode] |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
324 '(menu-item |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
325 "Omit mode" dired-omit-mode |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
326 :button (:toggle . dired-omit-mode) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
327 :help "Enable or disable omitting \"uninteresting\" files") |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
328 'dashes))) |
ca5365d36237
Add menu bindings for dired-do-find-marked-files,
Lars Hansen <larsh@soem.dk>
parents:
66469
diff
changeset
|
329 |
6694 | 330 ;;; GLOBAL BINDING. |
5426 | 331 (if dired-bind-jump |
332 (progn | |
333 (define-key global-map "\C-x\C-j" 'dired-jump) | |
334 (define-key global-map "\C-x4\C-j" 'dired-jump-other-window))) | |
335 | |
336 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
337 ;; Install into appropriate hooks. |
5426 | 338 |
339 (add-hook 'dired-mode-hook 'dired-extra-startup) | |
340 (add-hook 'dired-after-readin-hook 'dired-omit-expunge) | |
341 | |
342 (defun dired-extra-startup () | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
343 "Automatically put on `dired-mode-hook' to get extra Dired features: |
5426 | 344 \\<dired-mode-map> |
345 \\[dired-do-run-mail]\t-- run mail on folder (see `dired-bind-vm') | |
346 \\[dired-info]\t-- run info on file | |
347 \\[dired-man]\t-- run man on file | |
348 \\[dired-do-find-marked-files]\t-- visit all marked files simultaneously | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
349 \\[dired-omit-mode]\t-- toggle omitting of files |
35032 | 350 \\[dired-mark-sexp]\t-- mark by Lisp expression |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
351 \\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring; |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
352 \t you can feed it to other commands using \\[yank] |
5426 | 353 |
354 For more features, see variables | |
355 | |
35032 | 356 `dired-bind-vm' |
357 `dired-bind-jump' | |
358 `dired-bind-info' | |
359 `dired-bind-man' | |
360 `dired-vm-read-only-folders' | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
361 `dired-omit-mode' |
35032 | 362 `dired-omit-files' |
363 `dired-omit-extensions' | |
364 `dired-omit-size-limit' | |
365 `dired-find-subdir' | |
366 `dired-enable-local-variables' | |
367 `dired-local-variables-file' | |
368 `dired-guess-shell-gnutar' | |
369 `dired-guess-shell-gzip-quiet' | |
370 `dired-guess-shell-znew-switches' | |
371 `dired-guess-shell-alist-user' | |
372 `dired-clean-up-buffers-too' | |
5426 | 373 |
374 See also functions | |
375 | |
35032 | 376 `dired-flag-extension' |
377 `dired-virtual' | |
378 `dired-jump' | |
379 `dired-man' | |
380 `dired-vm' | |
381 `dired-rmail' | |
382 `dired-info' | |
383 `dired-do-find-marked-files'" | |
5426 | 384 (interactive) |
385 | |
386 ;; These must be done in each new dired buffer. | |
387 (dired-hack-local-variables) | |
388 (dired-omit-startup)) | |
389 | |
390 | |
14169 | 391 ;;; BUFFER CLEANING. |
5426 | 392 |
14169 | 393 ;; REDEFINE. |
5426 | 394 (defun dired-clean-up-after-deletion (fn) |
35032 | 395 "Clean up after a deleted file or directory FN. |
396 Remove expanded subdir of deleted dir, if any." | |
5426 | 397 (save-excursion (and (cdr dired-subdir-alist) |
398 (dired-goto-subdir fn) | |
399 (dired-kill-subdir))) | |
400 | |
401 ;; Offer to kill buffer of deleted file FN. | |
402 (if dired-clean-up-buffers-too | |
403 (progn | |
404 (let ((buf (get-file-buffer fn))) | |
405 (and buf | |
406 (funcall (function y-or-n-p) | |
407 (format "Kill buffer of %s, too? " | |
408 (file-name-nondirectory fn))) | |
409 (save-excursion ; you never know where kill-buffer leaves you | |
410 (kill-buffer buf)))) | |
8792
d85424a6fb85
(dired-clean-up-after-deletion): Expand fn.
Richard M. Stallman <rms@gnu.org>
parents:
8713
diff
changeset
|
411 (let ((buf-list (dired-buffers-for-dir (expand-file-name fn))) |
5426 | 412 (buf nil)) |
413 (and buf-list | |
414 (y-or-n-p (format "Kill dired buffer%s of %s, too? " | |
415 (dired-plural-s (length buf-list)) | |
416 (file-name-nondirectory fn))) | |
417 (while buf-list | |
418 (save-excursion (kill-buffer (car buf-list))) | |
419 (setq buf-list (cdr buf-list))))))) | |
6694 | 420 ;; Anything else? |
5426 | 421 ) |
422 | |
423 | |
14169 | 424 ;;; EXTENSION MARKING FUNCTIONS. |
5426 | 425 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
426 ;; Mark files with some extension. |
5426 | 427 (defun dired-mark-extension (extension &optional marker-char) |
35032 | 428 "Mark all files with a certain EXTENSION for use in later commands. |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
429 A `.' is *not* automatically prepended to the string entered." |
5426 | 430 ;; EXTENSION may also be a list of extensions instead of a single one. |
431 ;; Optional MARKER-CHAR is marker to use. | |
432 (interactive "sMarking extension: \nP") | |
433 (or (listp extension) | |
434 (setq extension (list extension))) | |
435 (dired-mark-files-regexp | |
436 (concat ".";; don't match names with nothing but an extension | |
437 "\\(" | |
438 (mapconcat 'regexp-quote extension "\\|") | |
439 "\\)$") | |
440 marker-char)) | |
441 | |
442 (defun dired-flag-extension (extension) | |
35032 | 443 "In dired, flag all files with a certain EXTENSION for deletion. |
5426 | 444 A `.' is *not* automatically prepended to the string entered." |
445 (interactive "sFlagging extension: ") | |
446 (dired-mark-extension extension dired-del-marker)) | |
447 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
448 ;; Define some unpopular file extensions. Used for cleaning and omitting. |
5426 | 449 |
450 (defvar dired-patch-unclean-extensions | |
451 '(".rej" ".orig") | |
452 "List of extensions of dispensable files created by the `patch' program.") | |
453 | |
454 (defvar dired-tex-unclean-extensions | |
455 '(".toc" ".log" ".aux");; these are already in completion-ignored-extensions | |
456 "List of extensions of dispensable files created by TeX.") | |
457 | |
458 (defvar dired-latex-unclean-extensions | |
459 '(".idx" ".lof" ".lot" ".glo") | |
460 "List of extensions of dispensable files created by LaTeX.") | |
461 | |
462 (defvar dired-bibtex-unclean-extensions | |
463 '(".blg" ".bbl") | |
464 "List of extensions of dispensable files created by BibTeX.") | |
465 | |
466 (defvar dired-texinfo-unclean-extensions | |
467 '(".cp" ".cps" ".fn" ".fns" ".ky" ".kys" ".pg" ".pgs" | |
468 ".tp" ".tps" ".vr" ".vrs") | |
469 "List of extensions of dispensable files created by texinfo.") | |
470 | |
471 (defun dired-clean-patch () | |
472 "Flag dispensable files created by patch for deletion. | |
473 See variable `dired-patch-unclean-extensions'." | |
474 (interactive) | |
475 (dired-flag-extension dired-patch-unclean-extensions)) | |
476 | |
477 (defun dired-clean-tex () | |
6694 | 478 "Flag dispensable files created by [La]TeX etc. for deletion. |
52646 | 479 See variables `dired-tex-unclean-extensions', |
6694 | 480 `dired-latex-unclean-extensions', `dired-bibtex-unclean-extensions' and |
481 `dired-texinfo-unclean-extensions'." | |
5426 | 482 (interactive) |
483 (dired-flag-extension (append dired-texinfo-unclean-extensions | |
484 dired-latex-unclean-extensions | |
485 dired-bibtex-unclean-extensions | |
486 dired-tex-unclean-extensions))) | |
487 | |
6694 | 488 (defun dired-very-clean-tex () |
489 "Flag dispensable files created by [La]TeX *and* \".dvi\" for deletion. | |
490 See variables `dired-texinfo-unclean-extensions', | |
491 `dired-latex-unclean-extensions', `dired-bibtex-unclean-extensions' and | |
492 `dired-texinfo-unclean-extensions'." | |
5426 | 493 (interactive) |
6694 | 494 (dired-flag-extension (append dired-texinfo-unclean-extensions |
495 dired-latex-unclean-extensions | |
496 dired-bibtex-unclean-extensions | |
497 dired-tex-unclean-extensions | |
498 (list ".dvi")))) | |
5426 | 499 |
14169 | 500 ;;; JUMP. |
5426 | 501 |
7700
311f42f91dbd
(dired-jump): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents:
7189
diff
changeset
|
502 ;;;###autoload |
5426 | 503 (defun dired-jump (&optional other-window) |
504 "Jump to dired buffer corresponding to current buffer. | |
505 If in a file, dired the current directory and move to file's line. | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
506 If in Dired already, pop up a level and goto old directory's line. |
5426 | 507 In case the proper dired file line cannot be found, refresh the dired |
508 buffer and try again." | |
509 (interactive "P") | |
510 (let* ((file buffer-file-name) | |
511 (dir (if file (file-name-directory file) default-directory))) | |
512 (if (eq major-mode 'dired-mode) | |
513 (progn | |
514 (setq dir (dired-current-directory)) | |
515 (dired-up-directory other-window) | |
516 (or (dired-goto-file dir) | |
517 ;; refresh and try again | |
6694 | 518 (progn |
5426 | 519 (dired-insert-subdir (file-name-directory dir)) |
520 (dired-goto-file dir)))) | |
521 (if other-window | |
522 (dired-other-window dir) | |
523 (dired dir)) | |
524 (if file | |
525 (or (dired-goto-file file) | |
526 ;; refresh and try again | |
6694 | 527 (progn |
5426 | 528 (dired-insert-subdir (file-name-directory file)) |
16558
40a1e1451821
(dired-jump): Never turn omitting *on*.
Richard M. Stallman <rms@gnu.org>
parents:
16499
diff
changeset
|
529 (dired-goto-file file)) |
40a1e1451821
(dired-jump): Never turn omitting *on*.
Richard M. Stallman <rms@gnu.org>
parents:
16499
diff
changeset
|
530 ;; Toggle omitting, if it is on, and try again. |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
531 (if dired-omit-mode |
16558
40a1e1451821
(dired-jump): Never turn omitting *on*.
Richard M. Stallman <rms@gnu.org>
parents:
16499
diff
changeset
|
532 (progn |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
533 (dired-omit-mode) |
16558
40a1e1451821
(dired-jump): Never turn omitting *on*.
Richard M. Stallman <rms@gnu.org>
parents:
16499
diff
changeset
|
534 (dired-goto-file file)))))))) |
5426 | 535 |
536 (defun dired-jump-other-window () | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
537 "Like \\[dired-jump] (`dired-jump') but in other window." |
5426 | 538 (interactive) |
539 (dired-jump t)) | |
540 | |
14169 | 541 ;;; OMITTING. |
5426 | 542 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
543 ;; Enhanced omitting of lines from directory listings. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
544 ;; Marked files are never omitted. |
5426 | 545 |
546 ;; should probably get rid of this and always use 'no-dir. | |
547 ;; sk 28-Aug-1991 09:37 | |
548 (defvar dired-omit-localp 'no-dir | |
35032 | 549 "The LOCALP argument `dired-omit-expunge' passes to `dired-get-filename'. |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
550 If it is `no-dir', omitting is much faster, but you can only match |
49243 | 551 against the non-directory part of the file name. Set it to nil if you |
552 need to match the entire file name.") | |
5426 | 553 |
554 ;; \017=^O for Omit - other packages can chose other control characters. | |
555 (defvar dired-omit-marker-char ?\017 | |
105170 | 556 "Temporary marker used by Dired-Omit. |
5426 | 557 Should never be used as marker by the user or other packages.") |
558 | |
559 (defun dired-omit-startup () | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
560 (or (assq 'dired-omit-mode minor-mode-alist) |
5426 | 561 (setq minor-mode-alist |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
562 (append '((dired-omit-mode |
40438
3b2e61109dc2
(dired-omit-startup): Show ``Omit'' only in Dired
Gerd Moellmann <gerd@gnu.org>
parents:
39014
diff
changeset
|
563 (:eval (if (eq major-mode 'dired-mode) |
3b2e61109dc2
(dired-omit-startup): Show ``Omit'' only in Dired
Gerd Moellmann <gerd@gnu.org>
parents:
39014
diff
changeset
|
564 " Omit" "")))) |
3b2e61109dc2
(dired-omit-startup): Show ``Omit'' only in Dired
Gerd Moellmann <gerd@gnu.org>
parents:
39014
diff
changeset
|
565 minor-mode-alist)))) |
5426 | 566 |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
567 (defun dired-mark-omitted () |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
568 "Mark files matching `dired-omit-files' and `dired-omit-extensions'." |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
569 (interactive) |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
570 (let ((dired-omit-mode nil)) (revert-buffer)) ;; Show omitted files |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
571 (dired-mark-unmarked-files (dired-omit-regexp) nil nil dired-omit-localp)) |
5426 | 572 |
573 (defvar dired-omit-extensions | |
574 (append completion-ignored-extensions | |
575 dired-latex-unclean-extensions | |
576 dired-bibtex-unclean-extensions | |
577 dired-texinfo-unclean-extensions) | |
35032 | 578 "If non-nil, a list of extensions \(strings\) to omit from Dired listings. |
7865
d3e50535e6da
(dired-man): Use internal function from man.el.
Richard M. Stallman <rms@gnu.org>
parents:
7839
diff
changeset
|
579 Defaults to elements of `completion-ignored-extensions', |
d3e50535e6da
(dired-man): Use internal function from man.el.
Richard M. Stallman <rms@gnu.org>
parents:
7839
diff
changeset
|
580 `dired-latex-unclean-extensions', `dired-bibtex-unclean-extensions', and |
35032 | 581 `dired-texinfo-unclean-extensions'. |
7865
d3e50535e6da
(dired-man): Use internal function from man.el.
Richard M. Stallman <rms@gnu.org>
parents:
7839
diff
changeset
|
582 |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
583 See interactive function `dired-omit-mode' \(\\[dired-omit-mode]\) and |
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
584 variables `dired-omit-mode' and `dired-omit-files'.") |
5426 | 585 |
586 (defun dired-omit-expunge (&optional regexp) | |
587 "Erases all unmarked files matching REGEXP. | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
588 Does nothing if global variable `dired-omit-mode' is nil, or if called |
16617
19b2aeb694d1
(dired-omit-size-limit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16558
diff
changeset
|
589 non-interactively and buffer is bigger than `dired-omit-size-limit'. |
5426 | 590 If REGEXP is nil or not specified, uses `dired-omit-files', and also omits |
591 filenames ending in `dired-omit-extensions'. | |
592 If REGEXP is the empty string, this function is a no-op. | |
593 | |
594 This functions works by temporarily binding `dired-marker-char' to | |
595 `dired-omit-marker-char' and calling `dired-do-kill-lines'." | |
596 (interactive "sOmit files (regexp): ") | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
597 (if (and dired-omit-mode |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
598 (or (called-interactively-p 'interactive) |
16617
19b2aeb694d1
(dired-omit-size-limit): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16558
diff
changeset
|
599 (not dired-omit-size-limit) |
22688
c952205ba590
(dired-omit-expunge): Message if skipping omitting
Richard M. Stallman <rms@gnu.org>
parents:
22574
diff
changeset
|
600 (< (buffer-size) dired-omit-size-limit) |
c952205ba590
(dired-omit-expunge): Message if skipping omitting
Richard M. Stallman <rms@gnu.org>
parents:
22574
diff
changeset
|
601 (progn |
c952205ba590
(dired-omit-expunge): Message if skipping omitting
Richard M. Stallman <rms@gnu.org>
parents:
22574
diff
changeset
|
602 (message "Not omitting: directory larger than %d characters." |
c952205ba590
(dired-omit-expunge): Message if skipping omitting
Richard M. Stallman <rms@gnu.org>
parents:
22574
diff
changeset
|
603 dired-omit-size-limit) |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
604 (setq dired-omit-mode nil) |
22688
c952205ba590
(dired-omit-expunge): Message if skipping omitting
Richard M. Stallman <rms@gnu.org>
parents:
22574
diff
changeset
|
605 nil))) |
5426 | 606 (let ((omit-re (or regexp (dired-omit-regexp))) |
8713
fad4e60c964d
(dired-omit-expunge): Avoid setting buffer modified
Richard M. Stallman <rms@gnu.org>
parents:
8078
diff
changeset
|
607 (old-modified-p (buffer-modified-p)) |
5426 | 608 count) |
609 (or (string= omit-re "") | |
610 (let ((dired-marker-char dired-omit-marker-char)) | |
611 (message "Omitting...") | |
612 (if (dired-mark-unmarked-files omit-re nil nil dired-omit-localp) | |
613 (progn | |
614 (setq count (dired-do-kill-lines nil "Omitted %d line%s.")) | |
11588
3ddbf9b31cf0
(dired-omit-expunge): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents:
11500
diff
changeset
|
615 (force-mode-line-update)) |
5426 | 616 (message "(Nothing to omit)")))) |
8713
fad4e60c964d
(dired-omit-expunge): Avoid setting buffer modified
Richard M. Stallman <rms@gnu.org>
parents:
8078
diff
changeset
|
617 ;; Try to preserve modified state of buffer. So `%*' doesn't appear |
fad4e60c964d
(dired-omit-expunge): Avoid setting buffer modified
Richard M. Stallman <rms@gnu.org>
parents:
8078
diff
changeset
|
618 ;; in mode-line of omitted buffers. |
35032 | 619 (set-buffer-modified-p (and old-modified-p |
8713
fad4e60c964d
(dired-omit-expunge): Avoid setting buffer modified
Richard M. Stallman <rms@gnu.org>
parents:
8078
diff
changeset
|
620 (save-excursion |
fad4e60c964d
(dired-omit-expunge): Avoid setting buffer modified
Richard M. Stallman <rms@gnu.org>
parents:
8078
diff
changeset
|
621 (goto-char (point-min)) |
fad4e60c964d
(dired-omit-expunge): Avoid setting buffer modified
Richard M. Stallman <rms@gnu.org>
parents:
8078
diff
changeset
|
622 (re-search-forward dired-re-mark nil t)))) |
5426 | 623 count))) |
624 | |
625 (defun dired-omit-regexp () | |
626 (concat (if dired-omit-files (concat "\\(" dired-omit-files "\\)") "") | |
627 (if (and dired-omit-files dired-omit-extensions) "\\|" "") | |
628 (if dired-omit-extensions | |
629 (concat ".";; a non-extension part should exist | |
630 "\\(" | |
631 (mapconcat 'regexp-quote dired-omit-extensions "\\|") | |
632 "\\)$") | |
633 ""))) | |
634 | |
635 ;; Returns t if any work was done, nil otherwise. | |
636 (defun dired-mark-unmarked-files (regexp msg &optional unflag-p localp) | |
35032 | 637 "Mark unmarked files matching REGEXP, displaying MSG. |
49243 | 638 REGEXP is matched against the entire file name. |
5426 | 639 Does not re-mark files which already have a mark. |
640 With prefix argument, unflag all those files. | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
641 Optional fourth argument LOCALP is as in `dired-get-filename'." |
5426 | 642 (interactive "P") |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
643 (let ((dired-marker-char (if unflag-p ?\s dired-marker-char))) |
5426 | 644 (dired-mark-if |
645 (and | |
646 ;; not already marked | |
647 (looking-at " ") | |
648 ;; uninteresting | |
649 (let ((fn (dired-get-filename localp t))) | |
650 (and fn (string-match regexp fn)))) | |
651 msg))) | |
652 | |
86529
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
653 ;; Compiler does not get fset. |
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
654 (declare-function dired-omit-old-add-entry "dired-x") |
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
655 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
656 ;; REDEFINE. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
657 ;; Redefine dired-aux.el's version of `dired-add-entry' |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
658 ;; Save old defun if not already done: |
86529
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
659 (or (fboundp 'dired-omit-old-add-entry) |
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
660 (fset 'dired-omit-old-add-entry (symbol-function 'dired-add-entry))) |
86458 | 661 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
662 ;; REDEFINE. |
18917
347133072016
(dired-omit-new-add-entry): Take new arg RELATIVE
Richard M. Stallman <rms@gnu.org>
parents:
18838
diff
changeset
|
663 (defun dired-omit-new-add-entry (filename &optional marker-char relative) |
5426 | 664 ;; This redefines dired-aux.el's dired-add-entry to avoid calling ls for |
665 ;; files that are going to be omitted anyway. | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
666 (if dired-omit-mode |
5426 | 667 ;; perhaps return t without calling ls |
668 (let ((omit-re (dired-omit-regexp))) | |
669 (if (or (string= omit-re "") | |
670 (not | |
671 (string-match omit-re | |
672 (cond | |
673 ((eq 'no-dir dired-omit-localp) | |
674 filename) | |
675 ((eq t dired-omit-localp) | |
676 (dired-make-relative filename)) | |
677 (t | |
678 (dired-make-absolute | |
679 filename | |
680 (file-name-directory filename))))))) | |
681 ;; if it didn't match, go ahead and add the entry | |
18917
347133072016
(dired-omit-new-add-entry): Take new arg RELATIVE
Richard M. Stallman <rms@gnu.org>
parents:
18838
diff
changeset
|
682 (dired-omit-old-add-entry filename marker-char relative) |
5426 | 683 ;; dired-add-entry returns t for success, perhaps we should |
684 ;; return file-exists-p | |
685 t)) | |
686 ;; omitting is not turned on at all | |
18917
347133072016
(dired-omit-new-add-entry): Take new arg RELATIVE
Richard M. Stallman <rms@gnu.org>
parents:
18838
diff
changeset
|
687 (dired-omit-old-add-entry filename marker-char relative))) |
5426 | 688 |
689 ;; Redefine it. | |
690 (fset 'dired-add-entry 'dired-omit-new-add-entry) | |
691 | |
692 | |
14169 | 693 ;;; VIRTUAL DIRED MODE. |
5426 | 694 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
695 ;; For browsing `ls -lR' listings in a dired-like fashion. |
5426 | 696 |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
697 (defalias 'virtual-dired 'dired-virtual) |
5426 | 698 (defun dired-virtual (dirname &optional switches) |
699 "Put this buffer into Virtual Dired mode. | |
700 | |
701 In Virtual Dired mode, all commands that do not actually consult the | |
702 filesystem will work. | |
703 | |
704 This is useful if you want to peruse and move around in an ls -lR | |
705 output file, for example one you got from an ftp server. With | |
706 ange-ftp, you can even dired a directory containing an ls-lR file, | |
707 visit that file and turn on virtual dired mode. But don't try to save | |
708 this file, as dired-virtual indents the listing and thus changes the | |
709 buffer. | |
710 | |
711 If you have save a Dired buffer in a file you can use \\[dired-virtual] to | |
712 resume it in a later session. | |
713 | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
714 Type \\<dired-mode-map>\\[revert-buffer] \ |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
715 in the Virtual Dired buffer and answer `y' to convert |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
716 the virtual to a real dired buffer again. You don't have to do this, though: |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
717 you can relist single subdirs using \\[dired-do-redisplay]." |
5426 | 718 |
719 ;; DIRNAME is the top level directory of the buffer. It will become | |
720 ;; its `default-directory'. If nil, the old value of | |
721 ;; default-directory is used. | |
722 | |
723 ;; Optional SWITCHES are the ls switches to use. | |
724 | |
725 ;; Shell wildcards will be used if there already is a `wildcard' | |
726 ;; line in the buffer (thus it is a saved Dired buffer), but there | |
727 ;; is no other way to get wildcards. Insert a `wildcard' line by | |
728 ;; hand if you want them. | |
729 | |
730 (interactive | |
731 (list (read-string "Virtual Dired directory: " (dired-virtual-guess-dir)))) | |
732 (goto-char (point-min)) | |
733 (or (looking-at " ") | |
734 ;; if not already indented, do it now: | |
735 (indent-region (point-min) (point-max) 2)) | |
736 (or dirname (setq dirname default-directory)) | |
737 (setq dirname (expand-file-name (file-name-as-directory dirname))) | |
738 (setq default-directory dirname) ; contains no wildcards | |
739 (let ((wildcard (save-excursion | |
740 (goto-char (point-min)) | |
741 (forward-line 1) | |
742 (and (looking-at "^ wildcard ") | |
743 (buffer-substring (match-end 0) | |
744 (progn (end-of-line) (point))))))) | |
745 (if wildcard | |
746 (setq dirname (expand-file-name wildcard default-directory)))) | |
747 ;; If raw ls listing (not a saved old dired buffer), give it a | |
748 ;; decent subdir headerline: | |
749 (goto-char (point-min)) | |
750 (or (looking-at dired-subdir-regexp) | |
86320
f362439da54b
(make-symbolic-link): Declare as function.
Juanma Barranquero <lekktu@gmail.com>
parents:
85719
diff
changeset
|
751 (insert " " |
66437
5a1898d736d0
(dired-virtual): Don't use `dired-insert-headerline'.
Masatake YAMATO <jet@gyve.org>
parents:
66325
diff
changeset
|
752 (directory-file-name (file-name-directory default-directory)) |
5a1898d736d0
(dired-virtual): Don't use `dired-insert-headerline'.
Masatake YAMATO <jet@gyve.org>
parents:
66325
diff
changeset
|
753 ":\n")) |
5426 | 754 (dired-mode dirname (or switches dired-listing-switches)) |
755 (setq mode-name "Virtual Dired" | |
756 revert-buffer-function 'dired-virtual-revert) | |
757 (set (make-local-variable 'dired-subdir-alist) nil) | |
758 (dired-build-subdir-alist) | |
759 (goto-char (point-min)) | |
760 (dired-initial-position dirname)) | |
761 | |
762 (defun dired-virtual-guess-dir () | |
35032 | 763 "Guess and return appropriate working directory of this buffer. |
35094
9c72879773aa
(dired-virtual-guess-dir): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
35032
diff
changeset
|
764 The buffer is assumed to be in Dired or ls -lR format. The guess is |
35032 | 765 based upon buffer contents. If nothing could be guessed, returns |
766 nil." | |
5426 | 767 |
768 (let ((regexp "^\\( \\)?\\([^ \n\r]*\\)\\(:\\)[\n\r]") | |
769 (subexpr 2)) | |
770 (goto-char (point-min)) | |
771 (cond ((looking-at regexp) | |
772 ;; If a saved dired buffer, look to which dir and | |
773 ;; perhaps wildcard it belongs: | |
774 (let ((dir (buffer-substring (match-beginning subexpr) | |
775 (match-end subexpr)))) | |
776 (file-name-as-directory dir))) | |
777 ;; Else no match for headerline found. It's a raw ls listing. | |
778 ;; In raw ls listings the directory does not have a headerline | |
779 ;; try parent of first subdir, if any | |
780 ((re-search-forward regexp nil t) | |
781 (file-name-directory | |
782 (directory-file-name | |
783 (file-name-as-directory | |
784 (buffer-substring (match-beginning subexpr) | |
785 (match-end subexpr)))))) | |
786 (t ; if all else fails | |
787 nil)))) | |
788 | |
789 | |
790 (defun dired-virtual-revert (&optional arg noconfirm) | |
791 (if (not | |
792 (y-or-n-p "Cannot revert a Virtual Dired buffer - switch to Real Dired mode? ")) | |
35032 | 793 (error "Cannot revert a Virtual Dired buffer") |
5426 | 794 (setq mode-name "Dired" |
795 revert-buffer-function 'dired-revert) | |
796 (revert-buffer))) | |
797 | |
798 ;; A zero-arg version of dired-virtual. | |
799 (defun dired-virtual-mode () | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
800 "Put current buffer into Virtual Dired mode (see `dired-virtual'). |
77369
0e2f72a2fc13
Johan Bockg? <bojohan at dd.chalmers.se>:
Glenn Morris <rgm@gnu.org>
parents:
76976
diff
changeset
|
801 Useful on `magic-mode-alist' with the regexp |
5426 | 802 |
77369
0e2f72a2fc13
Johan Bockg? <bojohan at dd.chalmers.se>:
Glenn Morris <rgm@gnu.org>
parents:
76976
diff
changeset
|
803 \"^ \\\\(/[^ /]+\\\\)+/?:$\" |
5426 | 804 |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
805 to put saved dired buffers automatically into Virtual Dired mode. |
5426 | 806 |
77369
0e2f72a2fc13
Johan Bockg? <bojohan at dd.chalmers.se>:
Glenn Morris <rgm@gnu.org>
parents:
76976
diff
changeset
|
807 Also useful for `auto-mode-alist' like this: |
5426 | 808 |
77369
0e2f72a2fc13
Johan Bockg? <bojohan at dd.chalmers.se>:
Glenn Morris <rgm@gnu.org>
parents:
76976
diff
changeset
|
809 (add-to-list 'auto-mode-alist |
0e2f72a2fc13
Johan Bockg? <bojohan at dd.chalmers.se>:
Glenn Morris <rgm@gnu.org>
parents:
76976
diff
changeset
|
810 '(\"[^/]\\\\.dired\\\\'\" . dired-virtual-mode))" |
5426 | 811 (interactive) |
812 (dired-virtual (dired-virtual-guess-dir))) | |
813 | |
814 | |
14169 | 815 ;;; SMART SHELL. |
5426 | 816 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
817 ;; An Emacs buffer can have but one working directory, stored in the |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
818 ;; buffer-local variable `default-directory'. A Dired buffer may have |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
819 ;; several subdirectories inserted, but still has but one working directory: |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
820 ;; that of the top level Dired directory in that buffer. For some commands |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
821 ;; it is appropriate that they use the current Dired directory instead of |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
822 ;; `default-directory', e.g., `find-file' and `compile'. This is a general |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
823 ;; mechanism is provided for special handling of the working directory in |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
824 ;; special major modes. |
5426 | 825 |
826 ;; It's easier to add to this alist than redefine function | |
827 ;; default-directory while keeping the old information. | |
828 (defconst default-directory-alist | |
829 '((dired-mode . (if (fboundp 'dired-current-directory) | |
830 (dired-current-directory) | |
831 default-directory))) | |
35032 | 832 "Alist of major modes and their opinion on `default-directory'. |
833 This is given as a Lisp expression to evaluate. A resulting value of | |
834 nil is ignored in favor of `default-directory'.") | |
5426 | 835 |
35032 | 836 (defun dired-default-directory () |
837 "Usage like variable `default-directory'. | |
838 Knows about the special cases in variable `default-directory-alist'." | |
5426 | 839 (or (eval (cdr (assq major-mode default-directory-alist))) |
840 default-directory)) | |
841 | |
94255
3849fa236ab2
(dired-smart-shell-command): Sync arguments and
Juri Linkov <juri@jurta.org>
parents:
94148
diff
changeset
|
842 (defun dired-smart-shell-command (command &optional output-buffer error-buffer) |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
843 "Like function `shell-command', but in the current Virtual Dired directory." |
94255
3849fa236ab2
(dired-smart-shell-command): Sync arguments and
Juri Linkov <juri@jurta.org>
parents:
94148
diff
changeset
|
844 (interactive |
3849fa236ab2
(dired-smart-shell-command): Sync arguments and
Juri Linkov <juri@jurta.org>
parents:
94148
diff
changeset
|
845 (list |
102195
1c6cb8760e45
(dired-smart-shell-command): Remove code that uses
Juri Linkov <juri@jurta.org>
parents:
101541
diff
changeset
|
846 (read-shell-command "Shell command: " nil nil |
1c6cb8760e45
(dired-smart-shell-command): Remove code that uses
Juri Linkov <juri@jurta.org>
parents:
101541
diff
changeset
|
847 (cond |
1c6cb8760e45
(dired-smart-shell-command): Remove code that uses
Juri Linkov <juri@jurta.org>
parents:
101541
diff
changeset
|
848 (buffer-file-name (file-relative-name buffer-file-name)) |
1c6cb8760e45
(dired-smart-shell-command): Remove code that uses
Juri Linkov <juri@jurta.org>
parents:
101541
diff
changeset
|
849 ((eq major-mode 'dired-mode) (dired-get-filename t t)))) |
94255
3849fa236ab2
(dired-smart-shell-command): Sync arguments and
Juri Linkov <juri@jurta.org>
parents:
94148
diff
changeset
|
850 current-prefix-arg |
3849fa236ab2
(dired-smart-shell-command): Sync arguments and
Juri Linkov <juri@jurta.org>
parents:
94148
diff
changeset
|
851 shell-command-default-error-buffer)) |
35032 | 852 (let ((default-directory (dired-default-directory))) |
94255
3849fa236ab2
(dired-smart-shell-command): Sync arguments and
Juri Linkov <juri@jurta.org>
parents:
94148
diff
changeset
|
853 (shell-command command output-buffer error-buffer))) |
5426 | 854 |
855 | |
14169 | 856 ;;; LOCAL VARIABLES FOR DIRED BUFFERS. |
5426 | 857 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
858 ;; Brief Description: |
6694 | 859 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
860 ;; * `dired-extra-startup' is part of the `dired-mode-hook'. |
6694 | 861 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
862 ;; * `dired-extra-startup' calls `dired-hack-local-variables' |
6694 | 863 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
864 ;; * `dired-hack-local-variables' checks the value of |
6694 | 865 ;;; `dired-local-variables-file' |
866 ;;; | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
867 ;; * Check if `dired-local-variables-file' is a non-nil string and is a |
5426 | 868 ;;; filename found in the directory of the Dired Buffer being created. |
6694 | 869 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
870 ;; * If `dired-local-variables-file' satisfies the above, then temporarily |
5426 | 871 ;;; include it in the Dired Buffer at the bottom. |
6694 | 872 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
873 ;; * Set `enable-local-variables' temporarily to the user variable |
5426 | 874 ;;; `dired-enable-local-variables' and run `hack-local-variables' on the |
875 ;;; Dired Buffer. | |
876 | |
13904
d9bf85b9c19e
(dired-local-variables-file): Use convert-standard-filename.
Richard M. Stallman <rms@gnu.org>
parents:
13033
diff
changeset
|
877 (defvar dired-local-variables-file (convert-standard-filename ".dired") |
5426 | 878 "Filename, as string, containing local dired buffer variables to be hacked. |
879 If this file found in current directory, then it will be inserted into dired | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
880 buffer and `hack-local-variables' will be run. See Info node |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
881 `(emacs)File Variables' for more information on local variables. |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
882 See also `dired-enable-local-variables'.") |
5426 | 883 |
884 (defun dired-hack-local-variables () | |
885 "Evaluate local variables in `dired-local-variables-file' for dired buffer." | |
886 (if (and dired-local-variables-file | |
887 (stringp dired-local-variables-file) | |
888 (file-exists-p dired-local-variables-file)) | |
889 (let ((opoint (point-max)) | |
890 buffer-read-only | |
891 ;; In case user has `enable-local-variables' set to nil we | |
892 ;; override it locally with dired's variable. | |
893 (enable-local-variables dired-enable-local-variables)) | |
894 ;; Insert 'em. | |
895 (save-excursion | |
896 (goto-char opoint) | |
897 (insert "\^L\n") | |
898 (insert-file-contents dired-local-variables-file)) | |
899 ;; Hack 'em. | |
900 (let ((buffer-file-name dired-local-variables-file)) | |
901 (hack-local-variables)) | |
902 ;; Make sure that the modeline shows the proper information. | |
903 (dired-sort-set-modeline) | |
904 ;; Delete this stuff: `eobp' is used to find last subdir by dired.el. | |
6694 | 905 (delete-region opoint (point-max))))) |
5426 | 906 |
6694 | 907 (defun dired-omit-here-always () |
35032 | 908 "Create `dired-local-variables-file' for omitting and reverts directory. |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
909 Sets `dired-omit-mode' to t in a local variables file that is readable by |
5426 | 910 dired." |
6694 | 911 (interactive) |
5426 | 912 (if (file-exists-p dired-local-variables-file) |
913 (message "File `./%s' already exists." dired-local-variables-file) | |
914 | |
915 ;; Create `dired-local-variables-file'. | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
916 (with-current-buffer (get-buffer-create " *dot-dired*") |
5426 | 917 (erase-buffer) |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
918 (insert "Local Variables:\ndired-omit-mode: t\nEnd:\n") |
5426 | 919 (write-file dired-local-variables-file) |
920 (kill-buffer (current-buffer))) | |
921 | |
922 ;; Run extra-hooks and revert directory. | |
923 (dired-extra-startup) | |
924 (dired-revert))) | |
925 | |
926 | |
14169 | 927 ;;; GUESS SHELL COMMAND. |
5426 | 928 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
929 ;; Brief Description: |
6694 | 930 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
931 ;; `dired-do-shell-command' is bound to `!' by dired.el. |
6694 | 932 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
933 ;; * Redefine `dired-read-shell-command' so it calls |
5426 | 934 ;;; `dired-guess-shell-command'. |
6694 | 935 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
936 ;; * `dired-guess-shell-command' calls `dired-guess-default' with list of |
5426 | 937 ;;; marked files. |
6694 | 938 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
939 ;; * Parse `dired-guess-shell-alist-user' and |
5426 | 940 ;;; `dired-guess-shell-alist-default' (in that order) for the first REGEXP |
941 ;;; that matches the first file in the file list. | |
6694 | 942 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
943 ;; * If the REGEXP matches all the entries of the file list then evaluate |
11035 | 944 ;;; COMMAND, which is either a string or a Lisp expression returning a |
5426 | 945 ;;; string. COMMAND may be a list of commands. |
6694 | 946 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
947 ;; * Return this command to `dired-guess-shell-command' which prompts user |
85719 | 948 ;;; with it. The list of commands is put into the list of default values. |
5426 | 949 ;;; If a command is used successfully then it is stored permanently in |
950 ;;; `dired-shell-command-history'. | |
951 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
952 ;; Guess what shell command to apply to a file. |
5426 | 953 (defvar dired-shell-command-history nil |
954 "History list for commands that read dired-shell commands.") | |
955 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
956 ;; Default list of shell commands. |
5426 | 957 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
958 ;; NOTE: Use `gunzip -c' instead of `zcat' on `.gz' files. Some do not |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
959 ;; install GNU zip's version of zcat. |
5426 | 960 |
961 (defvar dired-guess-shell-alist-default | |
962 (list | |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
963 (list "\\.tar$" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
964 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
965 (concat dired-guess-shell-gnutar " xvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
966 "tar xvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
967 ;; Extract files into a separate subdirectory |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
968 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
969 (concat "mkdir " (file-name-sans-extension file) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
970 "; " dired-guess-shell-gnutar " -C " |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
971 (file-name-sans-extension file) " -xvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
972 (concat "mkdir " (file-name-sans-extension file) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
973 "; tar -C " (file-name-sans-extension file) " -xvf")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
974 ;; List archive contents. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
975 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
976 (concat dired-guess-shell-gnutar " tvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
977 "tar tvf")) |
5426 | 978 |
979 ;; REGEXPS for compressed archives must come before the .Z rule to | |
980 ;; be recognized: | |
981 (list "\\.tar\\.Z$" | |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
982 ;; Untar it. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
983 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
984 (concat dired-guess-shell-gnutar " zxvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
985 (concat "zcat * | tar xvf -")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
986 ;; Optional conversion to gzip format. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
987 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
988 " " dired-guess-shell-znew-switches)) |
5426 | 989 |
990 ;; gzip'ed archives | |
23108
0005f4030460
(dired-guess-shell-alist-default): Fix regexp.
Karl Heuer <kwzh@gnu.org>
parents:
22688
diff
changeset
|
991 (list "\\.t\\(ar\\.\\)?gz$" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
992 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
993 (concat dired-guess-shell-gnutar " zxvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
994 (concat "gunzip -qc * | tar xvf -")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
995 ;; Extract files into a separate subdirectory |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
996 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
997 (concat "mkdir " (file-name-sans-extension file) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
998 "; " dired-guess-shell-gnutar " -C " |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
999 (file-name-sans-extension file) " -zxvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1000 (concat "mkdir " (file-name-sans-extension file) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1001 "; gunzip -qc * | tar -C " |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1002 (file-name-sans-extension file) " -xvf -")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1003 ;; Optional decompression. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1004 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q" "")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1005 ;; List archive contents. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1006 '(if dired-guess-shell-gnutar |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1007 (concat dired-guess-shell-gnutar " ztvf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1008 (concat "gunzip -qc * | tar tvf -"))) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1009 |
25409
d414a697a646
(dired-guess-shell-alist-default): Support bzip2 format.
Karl Heuer <kwzh@gnu.org>
parents:
23108
diff
changeset
|
1010 ;; bzip2'ed archives |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1011 (list "\\.t\\(ar\\.bz2\\|bz\\)$" |
25409
d414a697a646
(dired-guess-shell-alist-default): Support bzip2 format.
Karl Heuer <kwzh@gnu.org>
parents:
23108
diff
changeset
|
1012 "bunzip2 -c * | tar xvf -" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1013 ;; Extract files into a separate subdirectory |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1014 '(concat "mkdir " (file-name-sans-extension file) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1015 "; bunzip2 -c * | tar -C " |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1016 (file-name-sans-extension file) " -xvf -") |
25409
d414a697a646
(dired-guess-shell-alist-default): Support bzip2 format.
Karl Heuer <kwzh@gnu.org>
parents:
23108
diff
changeset
|
1017 ;; Optional decompression. |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1018 "bunzip2") |
5426 | 1019 |
106198
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1020 ;; xz'ed archives |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1021 (list "\\.t\\(ar\\.\\)?xz$" |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1022 "unxz -c * | tar xvf -" |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1023 ;; Extract files into a separate subdirectory |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1024 '(concat "mkdir " (file-name-sans-extension file) |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1025 "; unxz -c * | tar -C " |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1026 (file-name-sans-extension file) " -xvf -") |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1027 ;; Optional decompression. |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1028 "unxz") |
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1029 |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1030 '("\\.shar\\.Z$" "zcat * | unshar") |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1031 '("\\.shar\\.g?z$" "gunzip -qc * | unshar") |
5426 | 1032 |
27258
5188825710c0
(dired-guess-shell-alist-default):
Richard M. Stallman <rms@gnu.org>
parents:
27252
diff
changeset
|
1033 '("\\.e?ps$" "ghostview" "xloadimage" "lpr") |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1034 (list "\\.e?ps\\.g?z$" "gunzip -qc * | ghostview -" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1035 ;; Optional decompression. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1036 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1037 (list "\\.e?ps\\.Z$" "zcat * | ghostview -" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1038 ;; Optional conversion to gzip format. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1039 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1040 " " dired-guess-shell-znew-switches)) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1041 |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1042 '("\\.patch$" "cat * | patch") |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1043 (list "\\.patch\\.g?z$" "gunzip -qc * | patch" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1044 ;; Optional decompression. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1045 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1046 (list "\\.patch\\.Z$" "zcat * | patch" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1047 ;; Optional conversion to gzip format. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1048 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1049 " " dired-guess-shell-znew-switches)) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1050 |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1051 ;; The following four extensions are useful with dired-man ("N" key) |
68748
51fd7d4e1d8a
(dired-guess-shell-alist-default): Add .man as a `dired-man' target.
Masatake YAMATO <jet@gyve.org>
parents:
68651
diff
changeset
|
1052 (list "\\.\\(?:[0-9]\\|man\\)$" '(progn (require 'man) |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1053 (if (Man-support-local-filenames) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1054 "man -l" |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1055 "cat * | tbl | nroff -man -h"))) |
68748
51fd7d4e1d8a
(dired-guess-shell-alist-default): Add .man as a `dired-man' target.
Masatake YAMATO <jet@gyve.org>
parents:
68651
diff
changeset
|
1056 (list "\\.\\(?:[0-9]\\|man\\)\\.g?z$" '(progn (require 'man) |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1057 (if (Man-support-local-filenames) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1058 "man -l" |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1059 "gunzip -qc * | tbl | nroff -man -h")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1060 ;; Optional decompression. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1061 '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1062 (list "\\.[0-9]\\.Z$" '(progn (require 'man) |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1063 (if (Man-support-local-filenames) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1064 "man -l" |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1065 "zcat * | tbl | nroff -man -h")) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1066 ;; Optional conversion to gzip format. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1067 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1068 " " dired-guess-shell-znew-switches)) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1069 '("\\.pod$" "perldoc" "pod2man * | nroff -man") |
5426 | 1070 |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1071 '("\\.dvi$" "xdvi" "dvips") ; preview and printing |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1072 '("\\.au$" "play") ; play Sun audiofiles |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1073 '("\\.mpe?g$\\|\\.avi$" "xine -p") |
97628
c27cf1a5f2f6
(dired-guess-shell-alist-default): Add .mp3 and .ogg.
Glenn Morris <rgm@gnu.org>
parents:
94762
diff
changeset
|
1074 '("\\.ogg$" "ogg123") |
c27cf1a5f2f6
(dired-guess-shell-alist-default): Add .mp3 and .ogg.
Glenn Morris <rgm@gnu.org>
parents:
94762
diff
changeset
|
1075 '("\\.mp3$" "mpg123") |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1076 '("\\.wav$" "play") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1077 '("\\.uu$" "uudecode") ; for uudecoded files |
5426 | 1078 '("\\.hqx$" "mcvert") |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1079 '("\\.sh$" "sh") ; execute shell scripts |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1080 '("\\.xbm$" "bitmap") ; view X11 bitmaps |
5426 | 1081 '("\\.gp$" "gnuplot") |
27258
5188825710c0
(dired-guess-shell-alist-default):
Richard M. Stallman <rms@gnu.org>
parents:
27252
diff
changeset
|
1082 '("\\.p[bgpn]m$" "xloadimage") |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1083 '("\\.gif$" "xloadimage") ; view gif pictures |
27258
5188825710c0
(dired-guess-shell-alist-default):
Richard M. Stallman <rms@gnu.org>
parents:
27252
diff
changeset
|
1084 '("\\.tif$" "xloadimage") |
35032 | 1085 '("\\.png$" "display") ; xloadimage 4.1 doesn't grok PNG |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1086 '("\\.jpe?g$" "xloadimage") |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1087 '("\\.fig$" "xfig") ; edit fig pictures |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1088 '("\\.out$" "xgraph") ; for plotting purposes. |
5426 | 1089 '("\\.tex$" "latex" "tex") |
1090 '("\\.texi\\(nfo\\)?$" "makeinfo" "texi2dvi") | |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1091 '("\\.pdf$" "xpdf") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1092 '("\\.doc$" "antiword" "strings") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1093 '("\\.rpm$" "rpm -qilp" "rpm -ivh") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1094 '("\\.dia$" "dia") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1095 '("\\.mgp$" "mgp") |
5426 | 1096 |
1097 ;; Some other popular archivers. | |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1098 (list "\\.zip$" "unzip" "unzip -l" |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1099 ;; Extract files into a separate subdirectory |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1100 '(concat "unzip" (if dired-guess-shell-gzip-quiet " -q") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1101 " -d " (file-name-sans-extension file))) |
5426 | 1102 '("\\.zoo$" "zoo x//") |
1103 '("\\.lzh$" "lharc x") | |
1104 '("\\.arc$" "arc x") | |
1105 '("\\.shar$" "unshar") | |
1106 | |
1107 ;; Compression. | |
1108 (list "\\.g?z$" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q"))) | |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1109 (list "\\.dz$" "dictunzip") |
25409
d414a697a646
(dired-guess-shell-alist-default): Support bzip2 format.
Karl Heuer <kwzh@gnu.org>
parents:
23108
diff
changeset
|
1110 (list "\\.bz2$" "bunzip2") |
106198
97b90713fd52
Sven Joachim <svenjoac at gmx.de>
Glenn Morris <rgm@gnu.org>
parents:
105372
diff
changeset
|
1111 (list "\\.xz$" "unxz") |
5426 | 1112 (list "\\.Z$" "uncompress" |
72582
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1113 ;; Optional conversion to gzip format. |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1114 '(concat "znew" (if dired-guess-shell-gzip-quiet " -q") |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1115 " " dired-guess-shell-znew-switches)) |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1116 |
ebca3d924818
(dired-guess-shell-alist-default): Update.
Romain Francoise <romain@orebokech.com>
parents:
70806
diff
changeset
|
1117 '("\\.sign?$" "gpg --verify")) |
6694 | 1118 |
5426 | 1119 "Default alist used for shell command guessing. |
35032 | 1120 See `dired-guess-shell-alist-user'.") |
5426 | 1121 |
35032 | 1122 (defcustom dired-guess-shell-alist-user nil |
1123 "User-defined alist of rules for suggested commands. | |
1124 These rules take precedence over the predefined rules in the variable | |
5426 | 1125 `dired-guess-shell-alist-default' (to which they are prepended). |
1126 | |
1127 Each element of this list looks like | |
1128 | |
1129 \(REGEXP COMMAND...\) | |
1130 | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1131 where each COMMAND can either be a string or a Lisp expression that evaluates |
5426 | 1132 to a string. If several COMMANDs are given, the first one will be the default |
1133 and the rest will be added temporarily to the history and can be retrieved | |
1134 with \\[previous-history-element] (M-p) . | |
1135 | |
97628
c27cf1a5f2f6
(dired-guess-shell-alist-default): Add .mp3 and .ogg.
Glenn Morris <rgm@gnu.org>
parents:
94762
diff
changeset
|
1136 The variable `dired-guess-shell-case-fold-search' controls whether |
c27cf1a5f2f6
(dired-guess-shell-alist-default): Add .mp3 and .ogg.
Glenn Morris <rgm@gnu.org>
parents:
94762
diff
changeset
|
1137 REGEXP is matched case-sensitively. |
c27cf1a5f2f6
(dired-guess-shell-alist-default): Add .mp3 and .ogg.
Glenn Morris <rgm@gnu.org>
parents:
94762
diff
changeset
|
1138 |
5426 | 1139 You can set this variable in your ~/.emacs. For example, to add rules for |
1140 `.foo' and `.bar' files, write | |
1141 | |
1142 \(setq dired-guess-shell-alist-user | |
35032 | 1143 (list (list \"\\\\.foo\\\\'\" \"FOO-COMMAND\");; fixed rule |
5426 | 1144 ;; possibly more rules ... |
102265
a7393d93645e
(dired-guess-shell-alist-user): Fix doc typo.
Glenn Morris <rgm@gnu.org>
parents:
102200
diff
changeset
|
1145 (list \"\\\\.bar\\\\'\";; rule with condition test |
5426 | 1146 '(if condition |
1147 \"BAR-COMMAND-1\" | |
35032 | 1148 \"BAR-COMMAND-2\")))\)" |
1149 :group 'dired-x | |
1150 :type '(alist :key-type regexp :value-type (repeat sexp))) | |
5426 | 1151 |
77627
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1152 (defcustom dired-guess-shell-case-fold-search t |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1153 "If non-nil, `dired-guess-shell-alist-default' and |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1154 `dired-guess-shell-alist-user' are matched case-insensitively." |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1155 :group 'dired-x |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1156 :type 'boolean) |
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1157 |
5426 | 1158 (defun dired-guess-default (files) |
35032 | 1159 "Guess a shell commands for FILES. Return command or list of commands. |
1160 See `dired-guess-shell-alist-user'." | |
5426 | 1161 |
77627
6f7d1cf40bad
Revert 2007-04-06 change.
Romain Francoise <romain@orebokech.com>
parents:
77369
diff
changeset
|
1162 (let* ((case-fold-search dired-guess-shell-case-fold-search) |
5426 | 1163 ;; Prepend the user's alist to the default alist. |
1164 (alist (append dired-guess-shell-alist-user | |
1165 dired-guess-shell-alist-default)) | |
1166 (file (car files)) | |
1167 (flist (cdr files)) | |
1168 elt regexp cmds) | |
1169 | |
1170 ;; Find the first match in the alist for first file in FILES. | |
1171 (while alist | |
1172 (setq elt (car alist) | |
1173 regexp (car elt) | |
1174 alist (cdr alist)) | |
1175 (if (string-match regexp file) | |
1176 (setq cmds (cdr elt) | |
1177 alist nil))) | |
1178 | |
1179 ;; If more than one file, see if all of FILES match regular expression. | |
1180 (while (and flist | |
1181 (string-match regexp (car flist))) | |
1182 (setq flist (cdr flist))) | |
6694 | 1183 |
5426 | 1184 ;; If flist is still non-nil, then do not guess since this means that not |
1185 ;; all the files in FILES were matched by the regexp. | |
1186 (setq cmds (and (not flist) cmds)) | |
1187 | |
6694 | 1188 ;; Return commands or nil if flist is still non-nil. |
1189 ;; Evaluate the commands in order that any logical testing will be done. | |
5426 | 1190 (cond ((not (cdr cmds)) |
1191 (eval (car cmds))) ; single command | |
1192 (t | |
1193 (mapcar (function eval) cmds))))) | |
1194 | |
1195 (defun dired-guess-shell-command (prompt files) | |
35032 | 1196 "Ask user with PROMPT for a shell command, guessing a default from FILES." |
5426 | 1197 (let ((default (dired-guess-default files)) |
85518
50f694f3549c
(dired-guess-shell-command): Put all guesses to the
Juri Linkov <juri@jurta.org>
parents:
78236
diff
changeset
|
1198 default-list val) |
5426 | 1199 (if (null default) |
1200 ;; Nothing to guess | |
102200
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1201 (read-shell-command prompt nil 'dired-shell-command-history) |
5426 | 1202 (if (listp default) |
1203 ;; More than one guess | |
1204 (setq default-list default | |
1205 default (car default) | |
1206 prompt (concat | |
1207 prompt | |
1208 (format "{%d guesses} " (length default-list)))) | |
1209 ;; Just one guess | |
1210 (setq default-list (list default))) | |
85518
50f694f3549c
(dired-guess-shell-command): Put all guesses to the
Juri Linkov <juri@jurta.org>
parents:
78236
diff
changeset
|
1211 ;; Put the first guess in the prompt but not in the initial value. |
50f694f3549c
(dired-guess-shell-command): Put all guesses to the
Juri Linkov <juri@jurta.org>
parents:
78236
diff
changeset
|
1212 (setq prompt (concat prompt (format "[%s] " default))) |
50f694f3549c
(dired-guess-shell-command): Put all guesses to the
Juri Linkov <juri@jurta.org>
parents:
78236
diff
changeset
|
1213 ;; All guesses can be retrieved with M-n |
102200
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1214 (setq val (read-shell-command prompt nil |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1215 'dired-shell-command-history |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1216 default-list)) |
85518
50f694f3549c
(dired-guess-shell-command): Put all guesses to the
Juri Linkov <juri@jurta.org>
parents:
78236
diff
changeset
|
1217 ;; If we got a return, then return default. |
50f694f3549c
(dired-guess-shell-command): Put all guesses to the
Juri Linkov <juri@jurta.org>
parents:
78236
diff
changeset
|
1218 (if (equal val "") default val)))) |
5426 | 1219 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1220 ;; REDEFINE. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1221 ;; Redefine dired-aux.el's version: |
5426 | 1222 (defun dired-read-shell-command (prompt arg files) |
105170 | 1223 "Read a dired shell command prompting with PROMPT (using `read-shell-command'). |
35032 | 1224 ARG is the prefix arg and may be used to indicate in the prompt which |
102200
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1225 FILES are affected. |
35032 | 1226 This is an extra function so that you can redefine it." |
102200
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1227 (minibuffer-with-setup-hook |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1228 (lambda () |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1229 (set (make-local-variable 'minibuffer-default-add-function) |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1230 'minibuffer-default-add-dired-shell-commands)) |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1231 (dired-mark-pop-up |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1232 nil 'shell files |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1233 'dired-guess-shell-command |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1234 (format prompt (dired-mark-prompt arg files)) ; PROMPT |
74dd2284ef3a
(dired-guess-shell-command): Use read-shell-command
Juri Linkov <juri@jurta.org>
parents:
102195
diff
changeset
|
1235 files))) ; FILES |
5426 | 1236 |
1237 | |
14169 | 1238 ;;; RELATIVE SYMBOLIC LINKS. |
5426 | 1239 |
86320
f362439da54b
(make-symbolic-link): Declare as function.
Juanma Barranquero <lekktu@gmail.com>
parents:
85719
diff
changeset
|
1240 (declare-function make-symbolic-link "fileio.c") |
f362439da54b
(make-symbolic-link): Declare as function.
Juanma Barranquero <lekktu@gmail.com>
parents:
85719
diff
changeset
|
1241 |
5426 | 1242 (defvar dired-keep-marker-relsymlink ?S |
1243 "See variable `dired-keep-marker-move'.") | |
1244 | |
1245 (defun dired-make-relative-symlink (file1 file2 &optional ok-if-already-exists) | |
35032 | 1246 "Make a symbolic link (pointing to FILE1) in FILE2. |
5426 | 1247 The link is relative (if possible), for example |
1248 | |
1249 \"/vol/tex/bin/foo\" \"/vol/local/bin/foo\" | |
1250 | |
1251 results in | |
1252 | |
35032 | 1253 \"../../tex/bin/foo\" \"/vol/local/bin/foo\"" |
5426 | 1254 (interactive "FRelSymLink: \nFRelSymLink %s: \np") |
1255 (let (name1 name2 len1 len2 (index 0) sub) | |
1256 (setq file1 (expand-file-name file1) | |
1257 file2 (expand-file-name file2) | |
1258 len1 (length file1) | |
1259 len2 (length file2)) | |
49243 | 1260 ;; Find common initial file name components: |
5426 | 1261 (let (next) |
1262 (while (and (setq next (string-match "/" file1 index)) | |
1263 (setq next (1+ next)) | |
1264 (< next (min len1 len2)) | |
1265 ;; For the comparison, both substrings must end in | |
1266 ;; `/', so NEXT is *one plus* the result of the | |
1267 ;; string-match. | |
1268 ;; E.g., consider the case of linking "/tmp/a/abc" | |
13975 | 1269 ;; to "/tmp/abc" erroneously giving "/tmp/a" instead |
5426 | 1270 ;; of "/tmp/" as common initial component |
1271 (string-equal (substring file1 0 next) | |
1272 (substring file2 0 next))) | |
1273 (setq index next)) | |
1274 (setq name2 file2 | |
1275 sub (substring file1 0 index) | |
1276 name1 (substring file1 index))) | |
1277 (if (string-equal sub "/") | |
49243 | 1278 ;; No common initial file name found |
5426 | 1279 (setq name1 file1) |
1280 ;; Else they have a common parent directory | |
1281 (let ((tem (substring file2 index)) | |
1282 (start 0) | |
1283 (count 0)) | |
1284 ;; Count number of slashes we must compensate for ... | |
1285 (while (setq start (string-match "/" tem start)) | |
1286 (setq count (1+ count) | |
1287 start (1+ start))) | |
1288 ;; ... and prepend a "../" for each slash found: | |
1289 (while (> count 0) | |
1290 (setq count (1- count) | |
1291 name1 (concat "../" name1))))) | |
1292 (make-symbolic-link | |
1293 (directory-file-name name1) ; must not link to foo/ | |
1294 ; (trailing slash!) | |
1295 name2 ok-if-already-exists))) | |
1296 | |
75618
d75435a2e621
(dired-do-relsymlink): Add an autoload cookie.
Eli Zaretskii <eliz@gnu.org>
parents:
75617
diff
changeset
|
1297 ;;;###autoload |
5426 | 1298 (defun dired-do-relsymlink (&optional arg) |
35032 | 1299 "Relative symlink all marked (or next ARG) files into a directory. |
1300 Otherwise make a relative symbolic link to the current file. | |
5426 | 1301 This creates relative symbolic links like |
1302 | |
1303 foo -> ../bar/foo | |
1304 | |
1305 not absolute ones like | |
1306 | |
75612
9599324110d3
(dired-do-relsymlink): Add reference to dired-do-symlink.
Eli Zaretskii <eliz@gnu.org>
parents:
75347
diff
changeset
|
1307 foo -> /ugly/file/name/that/may/change/any/day/bar/foo |
9599324110d3
(dired-do-relsymlink): Add reference to dired-do-symlink.
Eli Zaretskii <eliz@gnu.org>
parents:
75347
diff
changeset
|
1308 |
75617
6625541ec588
(dired-do-relsymlink): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents:
75612
diff
changeset
|
1309 For absolute symlinks, use \\[dired-do-symlink]." |
5426 | 1310 (interactive "P") |
1311 (dired-do-create-files 'relsymlink (function dired-make-relative-symlink) | |
1312 "RelSymLink" arg dired-keep-marker-relsymlink)) | |
1313 | |
64367
93037e5003f9
(dired-do-relsymlink-regexp): Add missing optional arg ARG, and use it.
Eli Zaretskii <eliz@gnu.org>
parents:
64091
diff
changeset
|
1314 (defun dired-do-relsymlink-regexp (regexp newname &optional arg whole-name) |
5426 | 1315 "RelSymlink all marked files containing REGEXP to NEWNAME. |
1316 See functions `dired-do-rename-regexp' and `dired-do-relsymlink' | |
1317 for more info." | |
1318 (interactive (dired-mark-read-regexp "RelSymLink")) | |
1319 (dired-do-create-files-regexp | |
1320 (function dired-make-relative-symlink) | |
64367
93037e5003f9
(dired-do-relsymlink-regexp): Add missing optional arg ARG, and use it.
Eli Zaretskii <eliz@gnu.org>
parents:
64091
diff
changeset
|
1321 "RelSymLink" arg regexp newname whole-name dired-keep-marker-relsymlink)) |
5426 | 1322 |
1323 | |
14169 | 1324 ;;; VISIT ALL MARKED FILES SIMULTANEOUSLY. |
5426 | 1325 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1326 ;; Brief Description: |
6694 | 1327 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1328 ;; `dired-do-find-marked-files' is bound to `F' by dired-x.el. |
6694 | 1329 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1330 ;; * Use `dired-get-marked-files' to collect the marked files in the current |
6694 | 1331 ;;; Dired Buffer into a list of filenames `FILE-LIST'. |
1332 ;;; | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1333 ;; * Pass FILE-LIST to `dired-simultaneous-find-file' all with |
5426 | 1334 ;;; `dired-do-find-marked-files''s prefix argument NOSELECT. |
6694 | 1335 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1336 ;; * `dired-simultaneous-find-file' runs through FILE-LIST decrementing the |
5426 | 1337 ;;; list each time. |
6694 | 1338 ;;; |
105170 | 1339 ;; * If NOSELECT is non-nil then just run `find-file-noselect' on each |
5426 | 1340 ;;; element of FILE-LIST. |
6694 | 1341 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1342 ;; * If NOSELECT is nil then calculate the `size' of the window for each file |
5426 | 1343 ;;; by dividing the `window-height' by length of FILE-LIST. Thus, `size' is |
1344 ;;; cognizant of the window-configuration. | |
6694 | 1345 ;;; |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1346 ;; * If `size' is too small abort, otherwise run `find-file' on each element |
5426 | 1347 ;;; of FILE-LIST giving each a window of height `size'. |
1348 | |
1349 (defun dired-do-find-marked-files (&optional noselect) | |
1350 "Find all marked files displaying all of them simultaneously. | |
1351 With optional NOSELECT just find files but do not select them. | |
1352 | |
1353 The current window is split across all files marked, as evenly as possible. | |
1354 Remaining lines go to bottom-most window. The number of files that can be | |
1355 displayed this way is restricted by the height of the current window and | |
1356 `window-min-height'. | |
1357 | |
6694 | 1358 To keep dired buffer displayed, type \\[split-window-vertically] first. |
5426 | 1359 To display just marked files, type \\[delete-other-windows] first." |
1360 | |
1361 (interactive "P") | |
1362 (dired-simultaneous-find-file (dired-get-marked-files) noselect)) | |
1363 | |
1364 (defun dired-simultaneous-find-file (file-list noselect) | |
1365 | |
35032 | 1366 "Visit all files in FILE-LIST and display them simultaneously. |
1367 The current window is split across all files in FILE-LIST, as evenly as | |
1368 possible. Remaining lines go to the bottom-most window. The number of | |
1369 files that can be displayed this way is restricted by the height of the | |
1370 current window and the variable `window-min-height'. With non-nil | |
1371 NOSELECT the files are merely found but not selected." | |
6694 | 1372 |
5426 | 1373 ;; We don't make this function interactive because it is usually too clumsy |
1374 ;; to specify FILE-LIST interactively unless via dired. | |
1375 | |
1376 (let (size) | |
1377 | |
1378 (if noselect | |
1379 ;; Do not select the buffer. | |
1380 (find-file-noselect (car file-list)) | |
1381 | |
1382 ;; We will have to select the buffer. Calculate and check window size. | |
1383 (setq size (/ (window-height) (length file-list))) | |
1384 (or (<= window-min-height size) | |
35032 | 1385 (error "Too many files to visit simultaneously. Try C-u prefix")) |
5426 | 1386 (find-file (car file-list))) |
1387 | |
1388 ;; Decrement. | |
1389 (setq file-list (cdr file-list)) | |
1390 | |
1391 (while file-list | |
1392 | |
1393 (if noselect | |
1394 ;; Do not select the buffer. | |
1395 (find-file-noselect (car file-list)) | |
1396 | |
1397 ;; Vertically split off a window of desired size. Upper window will | |
1398 ;; have SIZE lines. Select lower (larger) window. We split it again. | |
1399 (select-window (split-window nil size)) | |
1400 (find-file (car file-list))) | |
1401 | |
1402 ;; Decrement. | |
1403 (setq file-list (cdr file-list))))) | |
1404 | |
1405 | |
14169 | 1406 ;;; MISCELLANEOUS COMMANDS. |
5426 | 1407 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1408 ;; Run man on files. |
6694 | 1409 |
5426 | 1410 (defun dired-man () |
6694 | 1411 "Run man on this file. Display old buffer if buffer name matches filename. |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1412 Uses `man.el' of \\[manual-entry] fame." |
5426 | 1413 (interactive) |
7865
d3e50535e6da
(dired-man): Use internal function from man.el.
Richard M. Stallman <rms@gnu.org>
parents:
7839
diff
changeset
|
1414 (require 'man) |
54522
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1415 (let* ((file (dired-get-filename)) |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1416 (manual-program (replace-regexp-in-string "\\*" "%s" |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1417 (dired-guess-shell-command |
8379dc4bdc83
(dired-guess-shell-alist-default): Add choices for
Juri Linkov <juri@jurta.org>
parents:
52646
diff
changeset
|
1418 "Man command: " (list file))))) |
7865
d3e50535e6da
(dired-man): Use internal function from man.el.
Richard M. Stallman <rms@gnu.org>
parents:
7839
diff
changeset
|
1419 (Man-getpage-in-background file))) |
5426 | 1420 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1421 ;; Run Info on files. |
5426 | 1422 |
1423 (defun dired-info () | |
1424 "Run info on this file." | |
1425 (interactive) | |
1426 (info (dired-get-filename))) | |
1427 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1428 ;; Run mail on mail folders. |
5426 | 1429 |
66868
ccb8ee5226d6
If `vm-visit-folder' doesn't exist, define it as a dummy function in
Romain Francoise <romain@orebokech.com>
parents:
66659
diff
changeset
|
1430 ;; Avoid compiler warning. |
ccb8ee5226d6
If `vm-visit-folder' doesn't exist, define it as a dummy function in
Romain Francoise <romain@orebokech.com>
parents:
66659
diff
changeset
|
1431 (eval-when-compile |
ccb8ee5226d6
If `vm-visit-folder' doesn't exist, define it as a dummy function in
Romain Francoise <romain@orebokech.com>
parents:
66659
diff
changeset
|
1432 (when (not (fboundp 'vm-visit-folder)) |
ccb8ee5226d6
If `vm-visit-folder' doesn't exist, define it as a dummy function in
Romain Francoise <romain@orebokech.com>
parents:
66659
diff
changeset
|
1433 (defun vm-visit-folder (file &optional arg) |
ccb8ee5226d6
If `vm-visit-folder' doesn't exist, define it as a dummy function in
Romain Francoise <romain@orebokech.com>
parents:
66659
diff
changeset
|
1434 nil))) |
6694 | 1435 |
5426 | 1436 (defun dired-vm (&optional read-only) |
1437 "Run VM on this file. | |
1438 With prefix arg, visit folder read-only (this requires at least VM 5). | |
1439 See also variable `dired-vm-read-only-folders'." | |
1440 (interactive "P") | |
1441 (let ((dir (dired-current-directory)) | |
1442 (fil (dired-get-filename))) | |
1443 ;; take care to supply 2nd arg only if requested - may still run VM 4! | |
1444 (cond (read-only (vm-visit-folder fil t)) | |
1445 ((eq t dired-vm-read-only-folders) (vm-visit-folder fil t)) | |
1446 ((null dired-vm-read-only-folders) (vm-visit-folder fil)) | |
1447 (t (vm-visit-folder fil (not (file-writable-p fil))))) | |
1448 ;; so that pressing `v' inside VM does prompt within current directory: | |
1449 (set (make-local-variable 'vm-folder-directory) dir))) | |
1450 | |
1451 (defun dired-rmail () | |
1452 "Run RMAIL on this file." | |
1453 (interactive) | |
1454 (rmail (dired-get-filename))) | |
1455 | |
1456 (defun dired-do-run-mail () | |
1457 "If `dired-bind-vm' is t, then function `dired-vm', otherwise `dired-rmail'." | |
1458 (interactive) | |
1459 (if dired-bind-vm | |
1460 ;; Read mail folder using vm. | |
1461 (dired-vm) | |
1462 ;; Read mail folder using rmail. | |
1463 (dired-rmail))) | |
1464 | |
1465 | |
14169 | 1466 ;;; MISCELLANEOUS INTERNAL FUNCTIONS. |
5426 | 1467 |
86529
6116ad9615de
Standardize order of header items. Delete meaningless header keys.
Glenn Morris <rgm@gnu.org>
parents:
86458
diff
changeset
|
1468 (declare-function dired-old-find-buffer-nocreate "dired-x") |
86458 | 1469 |
5426 | 1470 (or (fboundp 'dired-old-find-buffer-nocreate) |
1471 (fset 'dired-old-find-buffer-nocreate | |
1472 (symbol-function 'dired-find-buffer-nocreate))) | |
1473 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1474 ;; REDEFINE. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1475 ;; Redefines dired.el's version of `dired-find-buffer-nocreate' |
13033
216edf9576ea
(dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents:
11933
diff
changeset
|
1476 (defun dired-find-buffer-nocreate (dirname &optional mode) |
11933
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1477 (if (and dired-find-subdir |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1478 ;; don't try to find a wildcard as a subdirectory |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1479 (string-equal dirname (file-name-directory dirname))) |
5426 | 1480 (let* ((cur-buf (current-buffer)) |
11933
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1481 (buffers (nreverse |
8792
d85424a6fb85
(dired-clean-up-after-deletion): Expand fn.
Richard M. Stallman <rms@gnu.org>
parents:
8713
diff
changeset
|
1482 (dired-buffers-for-dir (expand-file-name dirname)))) |
11933
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1483 (cur-buf-matches (and (memq cur-buf buffers) |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1484 ;; wildcards must match, too: |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1485 (equal dired-directory dirname)))) |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1486 ;; We don't want to switch to the same buffer--- |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1487 (setq buffers (delq cur-buf buffers));;need setq with delq |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1488 (or (car (sort buffers (function dired-buffer-more-recently-used-p))) |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1489 ;; ---unless it's the only possibility: |
9b53ce243465
(dired-find-buffer-nocreate): Don't try to find a
Karl Heuer <kwzh@gnu.org>
parents:
11588
diff
changeset
|
1490 (and cur-buf-matches cur-buf))) |
13033
216edf9576ea
(dired-up-directory): Add optional argument `other-window' to obviate
Erik Naggum <erik@naggum.no>
parents:
11933
diff
changeset
|
1491 (dired-old-find-buffer-nocreate dirname mode))) |
5426 | 1492 |
1493 ;; This should be a builtin | |
1494 (defun dired-buffer-more-recently-used-p (buffer1 buffer2) | |
1495 "Return t if BUFFER1 is more recently used than BUFFER2." | |
1496 (if (equal buffer1 buffer2) | |
1497 nil | |
1498 (let ((more-recent nil) | |
1499 (list (buffer-list))) | |
1500 (while (and list | |
1501 (not (setq more-recent (equal buffer1 (car list)))) | |
1502 (not (equal buffer2 (car list)))) | |
1503 (setq list (cdr list))) | |
1504 more-recent))) | |
1505 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1506 ;; Same thing as `dired-buffers-for-dir' of dired.el? - lrd 11/23/93 |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1507 ;; (defun dired-buffers-for-dir-exact (dir) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1508 ;; ;; Return a list of buffers that dired DIR (a directory or wildcard) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1509 ;; ;; at top level, or as subdirectory. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1510 ;; ;; Top level matches must match the wildcard part too, if any. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1511 ;; ;; The list is in reverse order of buffer creation, most recent last. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1512 ;; ;; As a side effect, killed dired buffers for DIR are removed from |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1513 ;; ;; dired-buffers. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1514 ;; (let ((alist dired-buffers) result elt) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1515 ;; (while alist |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1516 ;; (setq elt (car alist) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1517 ;; alist (cdr alist)) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1518 ;; (let ((buf (cdr elt))) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1519 ;; (if (buffer-name buf) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1520 ;; ;; Top level must match exactly against dired-directory in |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1521 ;; ;; case one of them is a wildcard. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1522 ;; (if (or (equal dir (with-current-buffer buf dired-directory)) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1523 ;; (assoc dir (with-current-buffer buf dired-subdir-alist))) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1524 ;; (setq result (cons buf result))) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1525 ;; ;; else buffer is killed - clean up: |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1526 ;; (setq dired-buffers (delq elt dired-buffers))))) |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1527 ;; result)) |
5426 | 1528 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1529 ;; REDEFINE. |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1530 ;; Redefines dired.el's version of `dired-initial-position' |
5426 | 1531 (defun dired-initial-position (dirname) |
35032 | 1532 "Where point should go in a new listing of DIRNAME. |
1533 Point assumed at beginning of new subdir line. | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1534 You may redefine this function as you wish, e.g. like in `dired-x.el'." |
5426 | 1535 (end-of-line) |
1536 (if dired-find-subdir (dired-goto-subdir dirname)) ; new | |
1537 (if dired-trivial-filenames (dired-goto-next-nontrivial-file))) | |
1538 | |
1539 | |
1540 ;; Does anyone use this? - lrd 6/29/93. | |
20513
6044f0be20eb
(dired-mark-sexp): Skip leading space in defining `uid'.
Richard M. Stallman <rms@gnu.org>
parents:
18917
diff
changeset
|
1541 ;; Apparently people do use it. - lrd 12/22/97. |
5426 | 1542 (defun dired-mark-sexp (predicate &optional unflag-p) |
1543 "Mark files for which PREDICATE returns non-nil. | |
1544 With a prefix arg, unflag those files instead. | |
1545 | |
1546 PREDICATE is a lisp expression that can refer to the following symbols: | |
1547 | |
1548 inode [integer] the inode of the file (only for ls -i output) | |
1549 s [integer] the size of the file for ls -s output | |
13975 | 1550 (usually in blocks or, with -k, in KByte) |
5426 | 1551 mode [string] file permission bits, e.g. \"-rw-r--r--\" |
1552 nlink [integer] number of links to file | |
1553 uid [string] owner | |
1554 gid [string] group (If the gid is not displayed by ls, | |
1555 this will still be set (to the same as uid)) | |
1556 size [integer] file size in bytes | |
1557 time [string] the time that ls displays, e.g. \"Feb 12 14:17\" | |
1558 name [string] the name of the file | |
1559 sym [string] if file is a symbolic link, the linked-to name, else \"\" | |
1560 | |
1561 For example, use | |
1562 | |
1563 (equal 0 size) | |
1564 | |
1565 to mark all zero length files." | |
1566 ;; Using sym="" instead of nil avoids the trap of | |
1567 ;; (string-match "foo" sym) into which a user would soon fall. | |
1568 ;; Give `equal' instead of `=' in the example, as this works on | |
1569 ;; integers and strings. | |
1570 (interactive "xMark if (lisp expr): \nP") | |
1571 (message "%s" predicate) | |
1572 (let ((dired-marker-char (if unflag-p ?\040 dired-marker-char)) | |
1573 inode s mode nlink uid gid size time name sym) | |
1574 (dired-mark-if | |
1575 (save-excursion | |
1576 (and | |
1577 ;; Sets vars | |
1578 ;; inode s mode nlink uid gid size time name sym | |
1579 | |
1580 ;; according to current file line. Returns t for success, nil if | |
1581 ;; there is no file line. Upon success, all variables are set, either | |
1582 ;; to nil or the appropriate value, so they need not be initialized. | |
1583 ;; Moves point within the current line. | |
1584 (if (dired-move-to-filename) | |
1585 (let (pos | |
1586 (mode-len 10) ; length of mode string | |
1587 ;; like in dired.el, but with subexpressions \1=inode, \2=s: | |
1588 (dired-re-inode-size "\\s *\\([0-9]*\\)\\s *\\([0-9]*\\) ?")) | |
1589 (beginning-of-line) | |
1590 (forward-char 2) | |
1591 (if (looking-at dired-re-inode-size) | |
1592 (progn | |
1593 (goto-char (match-end 0)) | |
62402
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1594 (setq inode (string-to-number (buffer-substring (match-beginning 1) |
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1595 (match-end 1))) |
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1596 s (string-to-number (buffer-substring (match-beginning 2) |
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1597 (match-end 2))))) |
5426 | 1598 (setq inode nil |
1599 s nil)) | |
1600 (setq mode (buffer-substring (point) (+ mode-len (point)))) | |
1601 (forward-char mode-len) | |
1602 (setq nlink (read (current-buffer))) | |
20513
6044f0be20eb
(dired-mark-sexp): Skip leading space in defining `uid'.
Richard M. Stallman <rms@gnu.org>
parents:
18917
diff
changeset
|
1603 ;; Karsten Wenger <kw@cis.uni-muenchen.de> fixed uid. |
35032 | 1604 (setq uid (buffer-substring (+ (point) 1) |
1605 (progn (forward-word 1) (point)))) | |
66325
fda96ff4c7e5
* files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents:
65288
diff
changeset
|
1606 (re-search-forward directory-listing-before-filename-regexp) |
5426 | 1607 (goto-char (match-beginning 1)) |
1608 (forward-char -1) | |
62402
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1609 (setq size (string-to-number (buffer-substring (save-excursion |
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1610 (backward-word 1) |
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1611 (setq pos (point))) |
a7e02ef1e3d6
Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents:
56060
diff
changeset
|
1612 (point)))) |
5426 | 1613 (goto-char pos) |
1614 (backward-word 1) | |
1615 ;; if no gid is displayed, gid will be set to uid | |
1616 ;; but user will then not reference it anyway in PREDICATE. | |
35032 | 1617 (setq gid (buffer-substring (save-excursion |
1618 (forward-word 1) (point)) | |
5426 | 1619 (point)) |
1620 time (buffer-substring (match-beginning 1) | |
1621 (1- (dired-move-to-filename))) | |
1622 name (buffer-substring (point) | |
35032 | 1623 (or |
1624 (dired-move-to-end-of-filename t) | |
1625 (point))) | |
5426 | 1626 sym (progn |
1627 (if (looking-at " -> ") | |
35032 | 1628 (buffer-substring |
1629 (progn (forward-char 4) (point)) | |
1630 (progn (end-of-line) (point))) | |
5426 | 1631 ""))) |
1632 t) | |
1633 nil) | |
1634 (eval predicate))) | |
1635 (format "'%s file" predicate)))) | |
1636 | |
1637 | |
14169 | 1638 ;;; FIND FILE AT POINT. |
5426 | 1639 |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1640 (defvar dired-x-hands-off-my-keys t |
35032 | 1641 "*Non-nil means don't bind `dired-x-find-file' over `find-file' on keyboard. |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1642 Similarly for `dired-x-find-file-other-window' over `find-file-other-window'. |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1643 If you change this variable after `dired-x.el' is loaded then do |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1644 \\[dired-x-bind-find-file].") |
5426 | 1645 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1646 ;; Bind `dired-x-find-file{-other-window}' over wherever |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1647 ;; `find-file{-other-window}' is bound? |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1648 (defun dired-x-bind-find-file () |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1649 "Bind `dired-x-find-file' in place of `find-file' \(or reverse\). |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1650 Similarly for `dired-x-find-file-other-window' and `find-file-other-window'. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1651 Binding direction based on `dired-x-hands-off-my-keys'. |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1652 This function is part of `after-init-hook'." |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1653 (interactive) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
1654 (if (called-interactively-p 'interactive) |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1655 (setq dired-x-hands-off-my-keys |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1656 (not (y-or-n-p "Bind dired-x-find-file over find-file? ")))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1657 (cond ((not dired-x-hands-off-my-keys) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1658 (substitute-key-definition 'find-file |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1659 'dired-x-find-file |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1660 (current-global-map)) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1661 (substitute-key-definition 'find-file-other-window |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1662 'dired-x-find-file-other-window |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1663 (current-global-map))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1664 (t |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1665 (substitute-key-definition 'dired-x-find-file |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1666 'find-file |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1667 (current-global-map)) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1668 (substitute-key-definition 'dired-x-find-file-other-window |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1669 'find-file-other-window |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1670 (current-global-map)))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1671 ;; Clear mini-buffer. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1672 (message nil)) |
5426 | 1673 |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1674 ;; Now call it so binding is correct and put on `after-init-hook' in case |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1675 ;; user changes binding. |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1676 (dired-x-bind-find-file) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1677 (add-hook 'after-init-hook 'dired-x-bind-find-file) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1678 |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1679 (defun dired-x-find-file (filename) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1680 "Edit file FILENAME. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1681 May create a new window, or reuse an existing one. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1682 See the function `display-buffer'. |
5426 | 1683 |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1684 Identical to `find-file' except when called interactively, with a prefix arg |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1685 \(e.g., \\[universal-argument]\), in which case it guesses filename near point. |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1686 Useful for editing file mentioned in buffer you are viewing, |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1687 or to test if that file exists. Use minibuffer after snatching filename." |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1688 (interactive (list (read-filename-at-point "Find file: "))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1689 (find-file (expand-file-name filename))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1690 |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1691 (defun dired-x-find-file-other-window (filename) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1692 "Edit file FILENAME, in another window. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1693 May create a new window, or reuse an existing one. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1694 See the function `display-buffer'. |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1695 |
105170 | 1696 Identical to `find-file-other-window' except when called interactively, with |
1697 a prefix arg \(e.g., \\[universal-argument]\), in which case it guesses filename near point. | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1698 Useful for editing file mentioned in buffer you are viewing, |
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1699 or to test if that file exists. Use minibuffer after snatching filename." |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1700 (interactive (list (read-filename-at-point "Find file: "))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1701 (find-file-other-window (expand-file-name filename))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1702 |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1703 ;;; Internal functions. |
49271
720dd3042058
(dired-filename-at-point): Fix filename-chars.
Dave Love <fx@gnu.org>
parents:
49243
diff
changeset
|
1704 |
49485
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1705 ;; Fixme: This should probably use `thing-at-point'. -- fx |
5426 | 1706 (defun dired-filename-at-point () |
35032 | 1707 "Get the filename closest to point, but do not change position. |
105170 | 1708 Has a preference for looking backward when not directly on a symbol. |
1709 Not perfect - point must be in middle of or end of filename." | |
5426 | 1710 |
49271
720dd3042058
(dired-filename-at-point): Fix filename-chars.
Dave Love <fx@gnu.org>
parents:
49243
diff
changeset
|
1711 (let ((filename-chars "-.[:alnum:]_/:$+@") |
27917
b54fc217c5c8
(dired-filename-at-point): Add `@' to valid
Gerd Moellmann <gerd@gnu.org>
parents:
27258
diff
changeset
|
1712 start end filename prefix) |
5426 | 1713 |
1714 (save-excursion | |
1715 ;; First see if just past a filename. | |
1716 (if (not (eobp)) | |
1717 (if (looking-at "[] \t\n[{}()]") ; whitespace or some parens | |
1718 (progn | |
1719 (skip-chars-backward " \n\t\r({[]})") | |
1720 (if (not (bobp)) | |
1721 (backward-char 1))))) | |
6694 | 1722 |
5426 | 1723 (if (string-match (concat "[" filename-chars "]") |
1724 (char-to-string (following-char))) | |
1725 (progn | |
49485
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1726 (if (re-search-backward (concat "[^" filename-chars "]") nil t) |
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1727 (forward-char) |
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1728 (goto-char (point-min))) |
5426 | 1729 (setq start (point)) |
27917
b54fc217c5c8
(dired-filename-at-point): Add `@' to valid
Gerd Moellmann <gerd@gnu.org>
parents:
27258
diff
changeset
|
1730 (setq prefix |
49485
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1731 (and (string-match |
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1732 "^\\w+@" |
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1733 (buffer-substring start (line-beginning-position))) |
27917
b54fc217c5c8
(dired-filename-at-point): Add `@' to valid
Gerd Moellmann <gerd@gnu.org>
parents:
27258
diff
changeset
|
1734 "/")) |
b54fc217c5c8
(dired-filename-at-point): Add `@' to valid
Gerd Moellmann <gerd@gnu.org>
parents:
27258
diff
changeset
|
1735 (goto-char start) |
5426 | 1736 (if (string-match "[/~]" (char-to-string (preceding-char))) |
1737 (setq start (1- start))) | |
49485
7c879dba798f
(dired-filename-at-point): Fix last change and tidy up.
Dave Love <fx@gnu.org>
parents:
49271
diff
changeset
|
1738 (re-search-forward (concat "\\=[" filename-chars "]*") nil t)) |
5426 | 1739 |
1740 (error "No file found around point!")) | |
1741 | |
6694 | 1742 ;; Return string. |
27917
b54fc217c5c8
(dired-filename-at-point): Add `@' to valid
Gerd Moellmann <gerd@gnu.org>
parents:
27258
diff
changeset
|
1743 (expand-file-name (concat prefix (buffer-substring start (point))))))) |
5426 | 1744 |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1745 (defun read-filename-at-point (prompt) |
35032 | 1746 "Return filename prompting with PROMPT with completion. |
1747 If `current-prefix-arg' is non-nil, uses name at point as guess." | |
8078
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1748 (if current-prefix-arg |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1749 (let ((guess (dired-filename-at-point))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1750 (read-file-name prompt |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1751 (file-name-directory guess) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1752 guess |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1753 nil (file-name-nondirectory guess))) |
1dd92ac02141
(dired-x-hands-off-my-keys): New user-defined variable.
Richard M. Stallman <rms@gnu.org>
parents:
7865
diff
changeset
|
1754 (read-file-name prompt default-directory))) |
5426 | 1755 |
14169 | 1756 ;;; BUG REPORTS |
5426 | 1757 |
35032 | 1758 ;; Fixme: get rid of this later. |
1759 | |
94762
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1760 ;; This section is provided for reports. It uses Barry A. Warsaw's |
64e725031836
Fix up commenting convention.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
94678
diff
changeset
|
1761 ;; reporter.el which is bundled with GNU Emacs v19. |
5426 | 1762 |
35032 | 1763 (defconst dired-x-help-address "bug-gnu-emacs@gnu.org" |
5426 | 1764 "Address(es) accepting submission of reports on dired-x.el.") |
1765 | |
1766 (defconst dired-x-variable-list | |
6694 | 1767 (list |
5426 | 1768 'dired-bind-vm |
1769 'dired-vm-read-only-folders | |
1770 'dired-bind-jump | |
1771 'dired-bind-info | |
1772 'dired-bind-man | |
1773 'dired-find-subdir | |
1774 'dired-enable-local-variables | |
1775 'dired-local-variables-file | |
1776 'dired-guess-shell-gnutar | |
1777 'dired-guess-shell-gzip-quiet | |
1778 'dired-guess-shell-znew-switches | |
1779 'dired-guess-shell-alist-user | |
1780 'dired-clean-up-buffers-too | |
55927
db4ee12d7def
(dired-omit-mode): Rename from dired-omit-files-p. Use define-minor-mode to define it.
Lars Hansen <larsh@soem.dk>
parents:
54662
diff
changeset
|
1781 'dired-omit-mode |
5426 | 1782 'dired-omit-files |
1783 'dired-omit-extensions | |
1784 ) | |
35032 | 1785 "List of variables to be appended to reports sent by `dired-x-submit-report'.") |
5426 | 1786 |
1787 (defun dired-x-submit-report () | |
64537
725c23089fbb
(virtual-dired): Declare with `defalias'.
Juanma Barranquero <lekktu@gmail.com>
parents:
64443
diff
changeset
|
1788 "Submit via `reporter.el' a bug report on program. |
105170 | 1789 Send report on `dired-x-file' version `dired-x-version', to |
35032 | 1790 `dired-x-maintainer' at address `dired-x-help-address' listing |
1791 variables `dired-x-variable-list' in the message." | |
5426 | 1792 (interactive) |
1793 | |
35032 | 1794 (reporter-submit-bug-report |
1795 dired-x-help-address ; address | |
1796 "dired-x" ; pkgname | |
1797 dired-x-variable-list ; varlist | |
1798 nil nil ; pre-/post-hooks | |
1799 "")) | |
5426 | 1800 |
1801 | |
1802 ;; As Barry Warsaw would say: "This might be useful..." | |
1803 (provide 'dired-x) | |
1804 | |
104943
eb30601bacc5
Put autoloads in dired.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents:
102265
diff
changeset
|
1805 ;; Local Variables: |
eb30601bacc5
Put autoloads in dired.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents:
102265
diff
changeset
|
1806 ;; byte-compile-dynamic: t |
eb30601bacc5
Put autoloads in dired.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents:
102265
diff
changeset
|
1807 ;; generated-autoload-file: "dired.el" |
eb30601bacc5
Put autoloads in dired.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents:
102265
diff
changeset
|
1808 ;; End: |
eb30601bacc5
Put autoloads in dired.el rather than loaddefs.el.
Glenn Morris <rgm@gnu.org>
parents:
102265
diff
changeset
|
1809 |
66469
8c968e06d0c0
Change Maintainer field.
Romain Francoise <romain@orebokech.com>
parents:
66437
diff
changeset
|
1810 ;; arch-tag: 71a43ba2-7a00-4793-a028-0613dd7765ae |
5426 | 1811 ;;; dired-x.el ends here |