summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Leach <matthew@mattleach.net>2014-11-21 12:08:00 +0200
committerEli Zaretskii <eliz@gnu.org>2014-11-21 12:08:00 +0200
commit48039f4b4c8f7651a56e5b61612aac64585a790a (patch)
treefbc382a298ca26ce069539d9b396802ef02ade1f
parent1b351d4673842c41183e3573a110e74025b785ce (diff)
downloademacs-48039f4b4c8f7651a56e5b61612aac64585a790a.tar.gz
Fix bug #1702 with missing feature in arc-mode.el.
lisp/arc-mode.el (archive-visit-single-files): New. (archive-mode): Visit file if archive contains a single file.
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/arc-mode.el16
2 files changed, 21 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9d5d72746f3..4169e838f0e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2014-11-13 Matthew Leach <matthew@mattleach.net>
+
+ * arc-mode.el (archive-visit-single-files): New.
+ (archive-mode): Visit file if archive contains a single file.
+ (Bug#1702)
+
2014-11-21 Ulrich Müller <ulm@gentoo.org>
* vc/vc.el: Fix a typo in the commentary.
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index a9f0ec71b51..df04521965f 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -147,6 +147,15 @@ 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 this option's value is nil, visiting such archives will
+ display the archive summary."
+ :type '(choice (const :tag "Visit the single file" t)
+ (const :tag "Show the archive summary" nil))
+ :group 'archive)
;; ------------------------------
;; Arc archive configuration
@@ -742,7 +751,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)