;; Date: 1994/08/18 19:27:42
;; Keywords: dired extensions
-;; Copyright (C) 1993, 1994 Free Software Foundation
+;; Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
-;;; This is Sebastian Kremer's excellent dired-x.el (Dired Extra), version
-;;; 1.191, hacked up for GNU Emacs 19. Redundant or conflicting material
-;;; has been removed or renamed in order to work properly with dired of
-;;; GNU Emacs 19. All suggestions or comments are most welcomed.
-
-;;;
-;;; Please, PLEASE, *PLEASE* see the info pages.
-;;;
-
-;;; BUGS: Type M-x dired-x-submit-report and a report will be generated.
-
-;;; INSTALLATION: In your ~/.emacs,
-;;;
-;;; (add-hook 'dired-load-hook
-;;; (function (lambda ()
-;;; (load "dired-x")
-;;; ;; Set global variables here. For example:
-;;; ;; (setq dired-guess-shell-gnutar "gtar")
-;;; )))
-;;; (add-hook 'dired-mode-hook
-;;; (function (lambda ()
-;;; ;; Set buffer-local variables here. For example:
-;;; ;; (setq dired-omit-files-p t)
-;;; )))
-;;;
-;;; At load time dired-x.el will install itself, redefine some functions, and
-;;; bind some dired keys. *Please* see the info pages for more details.
-
-;;; CAUTION: If you are using a version of GNU Emacs earlier than 19.20 than
-;;; you may have to edit dired.el. The copy of dired.el in GNU Emacs versions
-;;; earlier than 19.20 incorrectly had the call to run-hooks *before* the call
-;;; to provide. In such a case, it is possible that byte-compiling and/or
-;;; loading dired can cause an infinite loop. To prevent this, make sure the
-;;; line of code
-;;;
-;;; (run-hooks 'dired-load-hook)
-;;;
-;;; is the *last* executable line in the file dired.el. That is, make sure it
-;;; comes *after* the line
-;;;
-;;; (provide 'dired)
-;;;
-;;; *Please* see the info pages for more details.
-
-;;; User defined variables:
-;;;
-;;; dired-bind-vm
-;;; dired-vm-read-only-folders
-;;; dired-bind-jump
-;;; dired-bind-info
-;;; dired-bind-man
-;;; dired-x-hands-off-my-keys
-;;; dired-find-subdir
-;;; dired-enable-local-variables
-;;; dired-local-variables-file
-;;; dired-guess-shell-gnutar
-;;; dired-guess-shell-gzip-quiet
-;;; dired-guess-shell-znew-switches
-;;; dired-guess-shell-alist-user
-;;; dired-clean-up-buffers-too
-;;; dired-omit-files-p
-;;; dired-omit-files
-;;; dired-omit-extensions
-;;;
-;;; To find out more about these variables, load this file, put your cursor at
-;;; the end of any of the variable names, and hit C-h v [RET]. *Please* see
-;;; the info pages for more details.
-
-;;; When loaded this code redefines the following functions of GNU Emacs
-;;;
-;;; Function Found in this file of GNU Emacs
-;;; -------- -------------------------------
-;;; dired-clean-up-after-deletion ../lisp/dired.el
-;;; dired-find-buffer-nocreate ../lisp/dired.el
-;;; dired-initial-position ../lisp/dired.el
-;;; dired-up-directory ../lisp/dired.el
-;;;
-;;; dired-add-entry ../lisp/dired-aux.el
-;;; dired-read-shell-command ../lisp/dired-aux.el
-;;;
-;;; One drawback is that dired-x.el will load dired-aux.el as soon as dired is
-;;; loaded. Thus, the advantage of separating out non-essential dired stuff
-;;; into dired-aux.el and only loading when necessary will be lost. Please
-;;; note also that some of the comments in dired.el and dired-aux.el are
-;;; Kremer's that referred to the old dired-x.el. This now should be referring
-;;; to this program. (This is also a good reason to call this dired-x.el
-;;; instead of dired-x19.el.)
+;; This is Sebastian Kremer's excellent dired-x.el (Dired Extra), version
+;; 1.191, hacked up for GNU Emacs 19. Redundant or conflicting material
+;; has been removed or renamed in order to work properly with dired of
+;; GNU Emacs 19. All suggestions or comments are most welcomed.
+
+;;
+;; Please, PLEASE, *PLEASE* see the info pages.
+;;
+
+;; BUGS: Type M-x dired-x-submit-report and a report will be generated.
+
+;; INSTALLATION: In your ~/.emacs,
+;;
+;; (add-hook 'dired-load-hook
+;; (function (lambda ()
+;; (load "dired-x")
+;; ;; Set global variables here. For example:
+;; ;; (setq dired-guess-shell-gnutar "gtar")
+;; )))
+;; (add-hook 'dired-mode-hook
+;; (function (lambda ()
+;; ;; Set buffer-local variables here. For example:
+;; ;; (setq dired-omit-files-p t)
+;; )))
+;;
+;; At load time dired-x.el will install itself, redefine some functions, and
+;; bind some dired keys. *Please* see the info pages for more details.
+
+;; CAUTION: If you are using a version of GNU Emacs earlier than 19.20 than
+;; you may have to edit dired.el. The copy of dired.el in GNU Emacs versions
+;; earlier than 19.20 incorrectly had the call to run-hooks *before* the call
+;; to provide. In such a case, it is possible that byte-compiling and/or
+;; loading dired can cause an infinite loop. To prevent this, make sure the
+;; line of code
+;;
+;; (run-hooks 'dired-load-hook)
+;;
+;; is the *last* executable line in the file dired.el. That is, make sure it
+;; comes *after* the line
+;;
+;; (provide 'dired)
+;;
+;; *Please* see the info pages for more details.
+
+;; User defined variables:
+;;
+;; dired-bind-vm
+;; dired-vm-read-only-folders
+;; dired-bind-jump
+;; dired-bind-info
+;; dired-bind-man
+;; dired-x-hands-off-my-keys
+;; dired-find-subdir
+;; dired-enable-local-variables
+;; dired-local-variables-file
+;; dired-guess-shell-gnutar
+;; dired-guess-shell-gzip-quiet
+;; dired-guess-shell-znew-switches
+;; dired-guess-shell-alist-user
+;; dired-clean-up-buffers-too
+;; dired-omit-files-p
+;; dired-omit-files
+;; dired-omit-extensions
+;; dired-omit-size-limit
+;;
+;; To find out more about these variables, load this file, put your cursor at
+;; the end of any of the variable names, and hit C-h v [RET]. *Please* see
+;; the info pages for more details.
+
+;; When loaded this code redefines the following functions of GNU Emacs
+;;
+;; Function Found in this file of GNU Emacs
+;; -------- -------------------------------
+;; dired-clean-up-after-deletion ../lisp/dired.el
+;; dired-find-buffer-nocreate ../lisp/dired.el
+;; dired-initial-position ../lisp/dired.el
+;;
+;; dired-add-entry ../lisp/dired-aux.el
+;; dired-read-shell-command ../lisp/dired-aux.el
+;;
+;; One drawback is that dired-x.el will load dired-aux.el as soon as dired is
+;; loaded. Thus, the advantage of separating out non-essential dired stuff
+;; into dired-aux.el and only loading when necessary will be lost. Please
+;; note also that some of the comments in dired.el and dired-aux.el are
+;; Kremer's that referred to the old dired-x.el. This now should be referring
+;; to this program. (This is also a good reason to call this dired-x.el
+;; instead of dired-x19.el.)
\f
-;;;; Code:
+;;; Code:
-;;; LOAD.
+;; LOAD.
-;;; This is a no-op if dired-x is being loaded via `dired-load-hook'. It is
-;;; here in case the user has autoloaded dired-x via the dired-jump key binding
-;;; (instead of autoloading to dired as is suggested in the info-pages).
+;; This is a no-op if dired-x is being loaded via `dired-load-hook'. It is
+;; here in case the user has autoloaded dired-x via the dired-jump key binding
+;; (instead of autoloading to dired as is suggested in the info-pages).
(require 'dired)
-;;; We will redefine some functions and also need some macros so we need to
-;;; load dired stuff of GNU Emacs.
+;; We will redefine some functions and also need some macros so we need to
+;; load dired stuff of GNU Emacs.
(require 'dired-aux)
-;;;; User-defined variables.
-
-(defvar dired-bind-vm nil
- "*t says \"V\" in dired-mode will `dired-vm', otherwise \"V\" is `dired-rmail'.
-Also, RMAIL files contain -*- rmail -*- at the top so \"f\",
-`dired-advertised-find-file', will run rmail.")
-
-(defvar dired-bind-jump t
- "*t says bind `dired-jump' to C-x C-j, otherwise do not.")
+;;; User-defined variables.
-(defvar dired-bind-man t
- "*t says bind `dired-man' to \"N\" in dired-mode, otherwise do not.")
+(defgroup dired-x nil
+ "Extended directory editing (dired-x)."
+ :group 'dired)
-(defvar dired-bind-info t
- "*t says bind `dired-info' to \"I\" in dired-mode, otherwise do not.")
+(defgroup dired-keys nil
+ "Dired keys customizations."
+ :prefix "dired-"
+ :group 'dired-x)
-(defvar dired-vm-read-only-folders nil
+(defcustom dired-bind-vm nil
+ "*t says \"V\" in dired-mode will `dired-vm', otherwise \"V\" is `dired-rmail'.
+Also, RMAIL files contain -*- rmail -*- at the top so \"f\",
+`dired-advertised-find-file', will run rmail."
+ :type 'boolean
+ :group 'dired-keys)
+
+(defcustom dired-bind-jump t
+ "*t says bind `dired-jump' to C-x C-j, otherwise do not."
+ :type 'boolean
+ :group 'dired-keys)
+
+(defcustom dired-bind-man t
+ "*t says bind `dired-man' to \"N\" in dired-mode, otherwise do not."
+ :type 'boolean
+ :group 'dired-keys)
+
+(defcustom dired-bind-info t
+ "*t says bind `dired-info' to \"I\" in dired-mode, otherwise do not."
+ :type 'boolean
+ :group 'dired-keys)
+
+(defcustom dired-vm-read-only-folders nil
"*If t, \\[dired-vm] will visit all folders read-only.
If neither nil nor t, e.g. the symbol `if-file-read-only', only
files not writable by you are visited read-only.
-Read-only folders only work in VM 5, not in VM 4.")
+Read-only folders only work in VM 5, not in VM 4."
+ :type '(choice (const :tag "off" nil)
+ (const :tag "on" t)
+ (other :tag "non-writable only" if-file-read-only))
+ :group 'dired-x)
-(defvar dired-omit-files-p nil
+(defcustom dired-omit-files-p nil
"*If non-nil, \"uninteresting\" files are not listed (buffer-local).
Use \\[dired-omit-toggle] to toggle its value.
Uninteresting files are those whose filenames match regexp `dired-omit-files',
-plus those ending with extensions in `dired-omit-extensions'.")
+plus those ending with extensions in `dired-omit-extensions'."
+ :type 'boolean
+ :group 'dired-x)
(make-variable-buffer-local 'dired-omit-files-p)
-(defvar dired-omit-files "^#\\|^\\.$\\|^\\.\\.$"
+(defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$"
"*Filenames matching this regexp will not be displayed.
This only has effect when `dired-omit-files-p' is t. See interactive function
`dired-omit-toggle' \(\\[dired-omit-toggle]\) and variable
-`dired-omit-extensions'. The default is to omit `.', `..', and auto-save
-files.")
+`dired-omit-extensions'. The default is to omit `.', `..', auto-save
+files and lock files."
+ :type 'regexp
+ :group 'dired-x)
-(defvar dired-find-subdir nil ; t is pretty near to DWIM...
+(defcustom dired-find-subdir nil ; t is pretty near to DWIM...
"*If non-nil, Dired always finds a directory in a buffer of its own.
If nil, Dired finds the directory as a subdirectory in some other buffer
if it is present as one.
Dired avoids switching to the current buffer, so that if you have
a normal and a wildcard buffer for the same directory, C-x d RET will
-toggle between those two.")
+toggle between those two."
+ :type 'boolean
+ :group 'dired-x)
-(defvar dired-enable-local-variables t
+(defcustom dired-omit-size-limit 30000
+ "*Maximum size for the \"omitting\" feature.
+If nil, there is no maximum size."
+ :type '(choice (const :tag "no maximum" nil) integer)
+ :group 'dired-x)
+
+(defcustom dired-enable-local-variables t
"*Control use of local-variables lists in dired.
The value can be t, nil or something else.
A value of t means local-variables lists are obeyed;
nil means they are ignored; anything else means query.
This temporarily overrides the value of `enable-local-variables' when listing
-a directory. See also `dired-local-variables-file'.")
+a directory. See also `dired-local-variables-file'."
+ :type 'boolean
+ :group 'dired-x)
-(defvar dired-guess-shell-gnutar nil
+(defcustom dired-guess-shell-gnutar nil
"*If non-nil, name of GNU tar executable (e.g., \"tar\" or \"gtar\") and `z'
switch will be used for compressed or gzip'ed tar files. If no GNU tar, set
-to nil: a pipe using `zcat' or `gunzip -c' will be used.")
+to nil: a pipe using `zcat' or `gunzip -c' will be used."
+ :type 'boolean
+ :group 'dired-x)
-(defvar dired-guess-shell-gzip-quiet t
- "*non-nil says pass -q to gzip overriding verbose GZIP environment.")
+(defcustom dired-guess-shell-gzip-quiet t
+ "*non-nil says pass -q to gzip overriding verbose GZIP environment."
+ :type 'boolean
+ :group 'dired-x)
-(defvar dired-guess-shell-znew-switches nil
- "*If non-nil, then string of switches passed to `znew', example: \"-K\"")
+(defcustom dired-guess-shell-znew-switches nil
+ "*If non-nil, then string of switches passed to `znew', example: \"-K\""
+ :type 'boolean
+ :group 'dired-x)
-(defvar dired-clean-up-buffers-too t
- "*t says offer to kill buffers visiting files and dirs deleted in dired.")
+(defcustom dired-clean-up-buffers-too t
+ "*t says offer to kill buffers visiting files and dirs deleted in dired."
+ :type 'boolean
+ :group 'dired-x)
-;;;; KEY BINDINGS.
+;;; KEY BINDINGS.
(define-key dired-mode-map "\M-o" 'dired-omit-toggle)
(define-key dired-mode-map "\M-(" 'dired-mark-sexp)
+(define-key dired-mode-map "*(" 'dired-mark-sexp)
+(define-key dired-mode-map "*." 'dired-mark-extension)
(define-key dired-mode-map "\M-!" 'dired-smart-shell-command)
-(define-key dired-mode-map "T" 'dired-do-toggle)
(define-key dired-mode-map "w" 'dired-copy-filename-as-kill)
(define-key dired-mode-map "\M-g" 'dired-goto-file)
(define-key dired-mode-map "\M-G" 'dired-goto-subdir)
(define-key global-map "\C-x4\C-j" 'dired-jump-other-window)))
\f
-;;;; Install into appropriate hooks.
+;;; Install into appropriate hooks.
(add-hook 'dired-mode-hook 'dired-extra-startup)
(add-hook 'dired-after-readin-hook 'dired-omit-expunge)
\\[dired-man]\t-- run man on file
\\[dired-do-find-marked-files]\t-- visit all marked files simultaneously
\\[dired-omit-toggle]\t-- toggle omitting of files
- \\[dired-do-toggle]\t-- toggle marks
\\[dired-mark-sexp]\t-- mark by lisp expression
\\[dired-copy-filename-as-kill]\t-- copy the file or subdir names into the kill ring.
\t You can feed it to other commands using \\[yank].
dired-omit-files-p
dired-omit-files
dired-omit-extensions
+ dired-omit-size-limit
dired-find-subdir
dired-enable-local-variables
dired-local-variables-file
(dired-omit-startup))
\f
-;;;; BUFFER CLEANING.
+;;; BUFFER CLEANING.
-;;; REDEFINE.
+;; REDEFINE.
(defun dired-clean-up-after-deletion (fn)
;; Clean up after a deleted file or directory FN.
)
\f
-;;;; EXTENSION MARKING FUNCTIONS.
+;;; EXTENSION MARKING FUNCTIONS.
;;; Mark files with some extension.
(defun dired-mark-extension (extension &optional marker-char)
dired-tex-unclean-extensions
(list ".dvi"))))
\f
-;;;; JUMP.
+;;; JUMP.
;;;###autoload
(defun dired-jump (&optional other-window)
(dired dir))
(if file
(or (dired-goto-file file)
- ;; Toggle omitting, if necessary, and try again.
- (progn
- (dired-omit-toggle t)
- (dired-goto-file file))
;; refresh and try again
(progn
(dired-insert-subdir (file-name-directory file))
- (dired-goto-file file)))))))
+ (dired-goto-file file))
+ ;; Toggle omitting, if it is on, and try again.
+ (if dired-omit-files-p
+ (progn
+ (dired-omit-toggle)
+ (dired-goto-file file))))))))
(defun dired-jump-other-window ()
"Like \\[dired-jump] (dired-jump) but in other window."
(interactive)
(dired-jump t))
-
-;;; REDEFINE.
-;;; This replaces the version in dired.el
-;;; It simply adds the OTHER-WINDOW option to the one in dired.el.
-(defun dired-up-directory (&optional other-window)
- "Run dired on parent directory of current directory.
-Find the parent directory either in this buffer or another buffer.
-Finds in current window or in other window with optional OTHER-WINDOW.
-Creates a buffer if necessary."
- (interactive "P")
- (let* ((dir (dired-current-directory))
- (up (file-name-directory (directory-file-name dir))))
- (or (dired-goto-file (directory-file-name dir))
- ;; Only try dired-goto-subdir if buffer has more than one dir.
- (and (cdr dired-subdir-alist)
- (dired-goto-subdir up))
- (progn
- (if other-window
- (dired-other-window up)
- (dired up))
- (dired-goto-file dir)))))
-
\f
-;;;; TOGGLE.
-;;; Toggle marked files with unmarked files.
-
-(defun dired-do-toggle ()
- "Toggle marks.
-That is, currently marked files become unmarked and vice versa.
-Files marked with other flags (such as `D') are not affected.
-`.' and `..' are never toggled.
-As always, hidden subdirs are not affected."
- (interactive)
- (save-excursion
- (goto-char (point-min))
- (let (buffer-read-only)
- (while (not (eobp))
- (or (dired-between-files)
- (looking-at dired-re-dot)
- ;; use subst instead of insdel because it does not move
- ;; the gap and thus should be faster and because
- ;; other characters are left alone automatically
- (apply 'subst-char-in-region
- (point) (1+ (point))
- (if (eq ?\040 (following-char)) ; SPC
- (list ?\040 dired-marker-char)
- (list dired-marker-char ?\040))))
- (forward-line 1)))))
-
-\f
-;;;; COPY NAMES OF MARKED FILES INTO KILL-RING.
+;;; COPY NAMES OF MARKED FILES INTO KILL-RING.
(defun dired-copy-filename-as-kill (&optional arg)
"Copy names of marked (or next ARG) files into the kill ring.
(message "%s" string)))
\f
-;;;; OMITTING.
+;;; OMITTING.
;;; Enhanced omitting of lines from directory listings.
;;; Marked files are never omitted.
(if (not dired-omit-files-p)
(revert-buffer)
;; this will mention how many were omitted:
- (dired-omit-expunge))))
+ (let ((dired-omit-size-limit nil))
+ (dired-omit-expunge)))))
(defvar dired-omit-extensions
(append completion-ignored-extensions
(defun dired-omit-expunge (&optional regexp)
"Erases all unmarked files matching REGEXP.
-Does nothing if global variable `dired-omit-files-p' is nil.
+Does nothing if global variable `dired-omit-files-p' is nil, or if called
+ non-interactively and buffer is bigger than `dired-omit-size-limit'.
If REGEXP is nil or not specified, uses `dired-omit-files', and also omits
filenames ending in `dired-omit-extensions'.
If REGEXP is the empty string, this function is a no-op.
This functions works by temporarily binding `dired-marker-char' to
`dired-omit-marker-char' and calling `dired-do-kill-lines'."
(interactive "sOmit files (regexp): ")
- (if dired-omit-files-p
+ (if (and dired-omit-files-p
+ (or (interactive-p)
+ (not dired-omit-size-limit)
+ (< (buffer-size) dired-omit-size-limit)
+ (progn
+ (message "Not omitting: directory larger than %d characters."
+ dired-omit-size-limit)
+ (setq dired-omit-files-p nil)
+ nil)))
(let ((omit-re (or regexp (dired-omit-regexp)))
(old-modified-p (buffer-modified-p))
count)
msg)))
;;; REDEFINE.
-(defun dired-omit-new-add-entry (filename &optional marker-char)
+(defun dired-omit-new-add-entry (filename &optional marker-char relative)
;; This redefines dired-aux.el's dired-add-entry to avoid calling ls for
;; files that are going to be omitted anyway.
(if dired-omit-files-p
filename
(file-name-directory filename)))))))
;; if it didn't match, go ahead and add the entry
- (dired-omit-old-add-entry filename marker-char)
+ (dired-omit-old-add-entry filename marker-char relative)
;; dired-add-entry returns t for success, perhaps we should
;; return file-exists-p
t))
;; omitting is not turned on at all
- (dired-omit-old-add-entry filename marker-char)))
+ (dired-omit-old-add-entry filename marker-char relative)))
;;; REDEFINE.
;;; Redefine dired-aux.el's version of `dired-add-entry'
(fset 'dired-add-entry 'dired-omit-new-add-entry)
\f
-;;;; VIRTUAL DIRED MODE.
+;;; VIRTUAL DIRED MODE.
;;; For browsing `ls -lR' listings in a dired-like fashion.
(dired-virtual (dired-virtual-guess-dir)))
\f
-;;;; SMART SHELL.
+;;; SMART SHELL.
;;; An Emacs buffer can have but one working directory, stored in the
;;; buffer-local variable `default-directory'. A Dired buffer may have
(defun dired-smart-shell-command (cmd &optional insert)
"Like function `shell-command', but in the current Tree Dired directory."
- (interactive "sShell command: \nP")
+ (interactive (list (read-from-minibuffer "Shell command: "
+ nil nil nil 'shell-command-history)
+ current-prefix-arg))
(let ((default-directory (default-directory)))
(shell-command cmd insert)))
\f
-;;;; LOCAL VARIABLES FOR DIRED BUFFERS.
+;;; LOCAL VARIABLES FOR DIRED BUFFERS.
;;; Brief Description:
;;;
;;; `dired-enable-local-variables' and run `hack-local-variables' on the
;;; Dired Buffer.
-(defvar dired-local-variables-file ".dired"
+(defvar dired-local-variables-file (convert-standard-filename ".dired")
"Filename, as string, containing local dired buffer variables to be hacked.
If this file found in current directory, then it will be inserted into dired
buffer and `hack-local-variables' will be run. See Emacs Info pages for more
(dired-revert)))
\f
-;;;; GUESS SHELL COMMAND.
+;;; GUESS SHELL COMMAND.
;;; Brief Description:
;;;
;;; string. COMMAND may be a list of commands.
;;;
;;; * Return this command to `dired-guess-shell-command' which prompts user
-;;; with it. The list of commands are temporaily put into the history list.
+;;; with it. The list of commands is temporarily put into the history list.
;;; If a command is used successfully then it is stored permanently in
;;; `dired-shell-command-history'.
" " dired-guess-shell-znew-switches))
;; gzip'ed archives
- (list "\\.tar\\.g?z$"
+ (list "\\.t\\(ar\\.\\)?gz$"
'(if dired-guess-shell-gnutar
(concat dired-guess-shell-gnutar " zxvf")
(concat "gunzip -qc * | tar xvf -"))
;; Optional decompression.
'(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q" "")))
+ ;; bzip2'ed archives
+ (list "\\.tar\\.bz2$"
+ "bunzip2 -c * | tar xvf -"
+ ;; Optional decompression.
+ "bunzip2")
'("\\.shar.Z$" "zcat * | unshar")
'("\\.shar.g?z$" "gunzip -qc * | unshar")
- '("\\.ps$" "ghostview" "xv" "lpr")
- (list "\\.ps.g?z$" "gunzip -qc * | ghostview -"
+ '("\\.e?ps$" "ghostview" "xv" "lpr")
+ (list "\\.e?ps.g?z$" "gunzip -qc * | ghostview -"
;; Optional decompression.
'(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
- (list "\\.ps.Z$" "zcat * | ghostview -"
+ (list "\\.e?ps.Z$" "zcat * | ghostview -"
;; Optional conversion to gzip format.
'(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
" " dired-guess-shell-znew-switches))
'("\\.out$" "xgraph") ; for plotting purposes.
'("\\.tex$" "latex" "tex")
'("\\.texi\\(nfo\\)?$" "makeinfo" "texi2dvi")
+ '("\\.pdf$" "acroread") ; edit PDF files
;; Some other popular archivers.
'("\\.zoo$" "zoo x//")
;; Compression.
(list "\\.g?z$" '(concat "gunzip" (if dired-guess-shell-gzip-quiet " -q")))
+ (list "\\.bz2$" "bunzip2")
(list "\\.Z$" "uncompress"
;; Optional conversion to gzip format.
'(concat "znew" (if dired-guess-shell-gzip-quiet " -q")
files)) ; FILES
\f
-;;;; RELATIVE SYMBOLIC LINKS.
+;;; RELATIVE SYMBOLIC LINKS.
(defvar dired-keep-marker-relsymlink ?S
"See variable `dired-keep-marker-move'.")
;; `/', so NEXT is *one plus* the result of the
;; string-match.
;; E.g., consider the case of linking "/tmp/a/abc"
- ;; to "/tmp/abc" erronously giving "/tmp/a" instead
+ ;; to "/tmp/abc" erroneously giving "/tmp/a" instead
;; of "/tmp/" as common initial component
(string-equal (substring file1 0 next)
(substring file2 0 next)))
"RelSymLink" nil regexp newname whole-path dired-keep-marker-relsymlink))
\f
-;;;; VISIT ALL MARKED FILES SIMULTANEOUSLY.
+;;; VISIT ALL MARKED FILES SIMULTANEOUSLY.
;;; Brief Description:
;;;
(setq file-list (cdr file-list)))))
\f
-;;;; MISCELLANEOUS COMMANDS.
+;;; MISCELLANEOUS COMMANDS.
;;; Run man on files.
(dired-rmail)))
\f
-;;;; MISCELLANEOUS INTERNAL FUNCTIONS.
+;;; MISCELLANEOUS INTERNAL FUNCTIONS.
(or (fboundp 'dired-old-find-buffer-nocreate)
(fset 'dired-old-find-buffer-nocreate
;;; REDEFINE.
;;; Redefines dired.el's version of `dired-find-buffer-nocreate'
-(defun dired-find-buffer-nocreate (dirname)
- (if dired-find-subdir
+(defun dired-find-buffer-nocreate (dirname &optional mode)
+ (if (and dired-find-subdir
+ ;; don't try to find a wildcard as a subdirectory
+ (string-equal dirname (file-name-directory dirname)))
(let* ((cur-buf (current-buffer))
- (buffers (nreverse
+ (buffers (nreverse
(dired-buffers-for-dir (expand-file-name dirname))))
- (cur-buf-matches (and (memq cur-buf buffers)
- ;; wildcards must match, too:
- (equal dired-directory dirname))))
- ;; We don't want to switch to the same buffer---
- (setq buffers (delq cur-buf buffers));;need setq with delq
- (or (car (sort buffers (function dired-buffer-more-recently-used-p)))
- ;; ---unless it's the only possibility:
- (and cur-buf-matches cur-buf)))
- (dired-old-find-buffer-nocreate dirname)))
+ (cur-buf-matches (and (memq cur-buf buffers)
+ ;; wildcards must match, too:
+ (equal dired-directory dirname))))
+ ;; We don't want to switch to the same buffer---
+ (setq buffers (delq cur-buf buffers));;need setq with delq
+ (or (car (sort buffers (function dired-buffer-more-recently-used-p)))
+ ;; ---unless it's the only possibility:
+ (and cur-buf-matches cur-buf)))
+ (dired-old-find-buffer-nocreate dirname mode)))
;; This should be a builtin
(defun dired-buffer-more-recently-used-p (buffer1 buffer2)
\f
;; Does anyone use this? - lrd 6/29/93.
+;; Apparently people do use it. - lrd 12/22/97.
(defun dired-mark-sexp (predicate &optional unflag-p)
"Mark files for which PREDICATE returns non-nil.
With a prefix arg, unflag those files instead.
inode [integer] the inode of the file (only for ls -i output)
s [integer] the size of the file for ls -s output
- (ususally in blocks or, with -k, in KByte)
+ (usually in blocks or, with -k, in KByte)
mode [string] file permission bits, e.g. \"-rw-r--r--\"
nlink [integer] number of links to file
uid [string] owner
(setq mode (buffer-substring (point) (+ mode-len (point))))
(forward-char mode-len)
(setq nlink (read (current-buffer)))
- (setq uid (buffer-substring (point) (progn (forward-word 1) (point))))
+ ;; Karsten Wenger <kw@cis.uni-muenchen.de> fixed uid.
+ (setq uid (buffer-substring (+ (point) 1) (progn (forward-word 1) (point))))
(re-search-forward "\\(Jan\\|Feb\\|Mar\\|Apr\\|May\\|Jun\\|Jul\\|Aug\\|Sep\\|Oct\\|Nov\\|Dec\\)")
(goto-char (match-beginning 1))
(forward-char -1)
(format "'%s file" predicate))))
\f
-;;;; FIND FILE AT POINT.
+;;; FIND FILE AT POINT.
(defvar dired-x-hands-off-my-keys t
"*t means don't bind `dired-x-find-file' over `find-file' on keyboard.
(read-file-name prompt default-directory)))
\f
-;;;; BUG REPORTS
+;;; BUG REPORTS
;;; This section is provided for reports. It uses Barry A. Warsaw's
;;; reporter.el which is bundled with GNU Emacs v19.