;;; dired-x.el --- extra Dired functionality -*- lexical-binding:t -*-
-;; Copyright (C) 1993-1994, 1997, 2001-2015 Free Software Foundation,
+;; Copyright (C) 1993-1994, 1997, 2001-2016 Free Software Foundation,
;; Inc.
;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
dired-tex-unclean-extensions
(list ".dvi"))))
\f
+(defvar tar-superior-buffer)
;;; JUMP.
;;;###autoload
move to its line in dired."
(interactive
(list nil (and current-prefix-arg
- (read-file-name "Jump to Dired file: "))))
- (let* ((file (or file-name buffer-file-name))
- (dir (if file (file-name-directory file) default-directory)))
- (if (and (eq major-mode 'dired-mode) (null file-name))
- (progn
- (setq dir (dired-current-directory))
- (dired-up-directory other-window)
- (unless (dired-goto-file dir)
- ;; refresh and try again
- (dired-insert-subdir (file-name-directory dir))
- (dired-goto-file dir)))
- (if other-window
- (dired-other-window dir)
- (dired dir))
- (if file
- (or (dired-goto-file file)
+ (read-file-name "Jump to Dired file: "))))
+ (if (bound-and-true-p tar-subfile-mode)
+ (switch-to-buffer tar-superior-buffer)
+ (let* ((file (or file-name buffer-file-name))
+ (dir (if file (file-name-directory file) default-directory)))
+ (if (and (eq major-mode 'dired-mode) (null file-name))
+ (progn
+ (setq dir (dired-current-directory))
+ (dired-up-directory other-window)
+ (unless (dired-goto-file dir)
;; refresh and try again
- (progn
- (dired-insert-subdir (file-name-directory file))
- (dired-goto-file file))
- ;; Toggle omitting, if it is on, and try again.
- (when dired-omit-mode
- (dired-omit-mode)
- (dired-goto-file file)))))))
+ (dired-insert-subdir (file-name-directory dir))
+ (dired-goto-file dir)))
+ (if other-window
+ (dired-other-window dir)
+ (dired dir))
+ (if file
+ (or (dired-goto-file file)
+ ;; refresh and try again
+ (progn
+ (dired-insert-subdir (file-name-directory file))
+ (dired-goto-file file))
+ ;; Toggle omitting, if it is on, and try again.
+ (when dired-omit-mode
+ (dired-omit-mode)
+ (dired-goto-file file))))))))
;;;###autoload
(defun dired-jump-other-window (&optional file-name)
Also useful for `auto-mode-alist' like this:
- (add-to-list 'auto-mode-alist
- '(\"[^/]\\\\.dired\\\\'\" . dired-virtual-mode))"
+ (add-to-list \\='auto-mode-alist
+ \\='(\"[^/]\\\\.dired\\\\\\='\" . dired-virtual-mode))"
(interactive)
(dired-virtual (dired-virtual-guess-dir)))
dir-locals-file))
(if (file-exists-p dir-locals-file)
(message "File `./%s' already exists." dir-locals-file)
- (with-temp-buffer
- (insert "\
-\((dired-mode . ((subdirs . nil)
- (dired-omit-mode . t))))\n")
- (write-file dir-locals-file))
+ (add-dir-local-variable 'dired-mode 'subdirs nil)
+ (add-dir-local-variable 'dired-mode 'dired-omit-mode t)
;; Run extra-hooks and revert directory.
(when (derived-mode-p 'dired-mode)
(hack-dir-local-variables-non-file-buffer)
(interactive)
(let ((file (dired-get-filename t)))
(if dired-bind-vm
- (if (y-or-n-p (concat "Visit `" file
- "' as a mail folder with VM?"))
+ (if (y-or-n-p (format-message
+ "Visit `%s' as a mail folder with VM?" file))
(dired-vm))
;; Read mail folder using rmail.
- (if (y-or-n-p (concat "Visit `" file
- "' as a mailbox with RMAIL?"))
+ (if (y-or-n-p (format-message
+ "Visit `%s' as a mailbox with RMAIL?" file))
(dired-rmail)))))
\f