diff options
Diffstat (limited to 'lisp/arc-mode.el')
-rw-r--r-- | lisp/arc-mode.el | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 6744b210ab7..063e4ba9dcb 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -4,7 +4,7 @@ ;; Inc. ;; Author: Morten Welinder <terra@gnu.org> -;; Keywords: files archives msdog editing major-mode +;; Keywords: files archives ms-dos editing major-mode ;; Favorite-brand-of-beer: None, I hate beer. ;; This file is part of GNU Emacs. @@ -31,7 +31,7 @@ ;; understand the directory level of the archives. For this reason, ;; you should expect this code to need more fiddling than tar-mode.el ;; (although it at present has fewer bugs :-) In particular, I have -;; not tested this under Ms-Dog myself. +;; not tested this under MS-DOS myself. ;; ------------------------------------- ;; INTERACTION: arc-mode.el should play together with ;; @@ -147,6 +147,14 @@ A local copy of the archive will be used when updating." "Hook run when an archive member has been extracted." :type 'hook :group 'archive) + +(defcustom archive-visit-single-files nil + "If non-nil, opening an archive with a single file visits that file. +If nil, visiting such an archive displays the archive summary." + :version "25.1" + :type '(choice (const :tag "Visit the single file" t) + (const :tag "Show the archive summary" nil)) + :group 'archive) ;; ------------------------------ ;; Arc archive configuration @@ -742,7 +750,12 @@ archive. (if (default-value 'enable-multibyte-characters) (set-buffer-multibyte 'to)) (archive-summarize nil) - (setq buffer-read-only t)))) + (setq buffer-read-only t) + (when (and archive-visit-single-files + auto-compression-mode + (= (length archive-files) 1)) + (rename-buffer (concat " " (buffer-name))) + (archive-extract))))) ;; Archive mode is suitable only for specially formatted data. (put 'archive-mode 'mode-class 'special) @@ -2181,11 +2194,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (size (string-to-number (match-string 6)))) ;; Move to the beginning of the data. (goto-char (match-end 0)) - (setq time - (format-time-string - "%Y-%m-%d %H:%M" - (let ((high (truncate (/ time 65536)))) - (list high (truncate (- time (* 65536.0 high))))))) + (setq time (format-time-string "%Y-%m-%d %H:%M" time)) (setq extname (cond ((equal name "// ") (propertize ".<ExtNamesTable>." 'face 'italic)) |