summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-01-15 01:35:45 +0000
committerRichard M. Stallman <rms@gnu.org>1996-01-15 01:35:45 +0000
commita728aa90299292396187d0ebf0293a1badfcc318 (patch)
treede8a59a93b7ed3713dcae25adb753774f0e54427 /lisp
parente852d58d045327662b663e1bfc19cd596a09e9ee (diff)
downloademacs-a728aa90299292396187d0ebf0293a1badfcc318.tar.gz
(tar-summarize-buffer): Speed-up for large files.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/tar-mode.el13
1 files changed, 9 insertions, 4 deletions
diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el
index 28a31f504ec..311212de14f 100644
--- a/lisp/tar-mode.el
+++ b/lisp/tar-mode.el
@@ -461,11 +461,16 @@ is visible (and the real data of the buffer is hidden)."
(message "Warning: premature EOF parsing tar file")))
(save-excursion
(goto-char (point-min))
- (let ((buffer-read-only nil))
+ (let ((buffer-read-only nil)
+ (summaries nil))
+ ;; Collect summary lines and insert them all at once since tar files
+ ;; can be pretty big.
(tar-dolist (tar-desc tar-parse-info)
- (insert-string
- (tar-header-block-summarize (tar-desc-tokens tar-desc)))
- (insert-string "\n"))
+ (setq summaries
+ (cons (tar-header-block-summarize (tar-desc-tokens tar-desc))
+ (cons "\n"
+ summaries))))
+ (insert (apply 'concat summaries))
(make-local-variable 'tar-header-offset)
(setq tar-header-offset (point))
(narrow-to-region 1 tar-header-offset)