]> git.eshelyaron.com Git - emacs.git/commitdiff
(tar-mode, tar-mode-write-contents)
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 7 Jan 2009 02:15:37 +0000 (02:15 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 7 Jan 2009 02:15:37 +0000 (02:15 +0000)
(tar-write-region-annotate): Undo Andreas's last change.

lisp/ChangeLog
lisp/tar-mode.el

index e404bceba07da7b1e73f09774b53d5e3e2239055..398509369a4350c1d146b47e3a26aa818f519676 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * tar-mode.el (tar-mode, tar-mode-write-contents)
+       (tar-write-region-annotate): Undo Andreas's last change.
+
 2009-01-06  Michael Albinus  <michael.albinus@gmx.de>
 
        * net/tramp.el (tramp-do-copy-or-rename-file-directly)
index b15c0b895877dcd2da9b6e0dcb216d09b5d09e4a..7e091d8d038a15b9e0e7ee193767987fdfc61134 100644 (file)
@@ -637,7 +637,10 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'.
   ;; buffer for the summary.
   (assert (not (tar-data-swapped-p)))
   (set (make-local-variable 'revert-buffer-function) 'tar-mode-revert)
-  (add-hook 'write-contents-functions 'tar-mode-write-contents nil t)
+  ;; We started using write-contents-functions, but this hook is not
+  ;; used during auto-save, so we now use
+  ;; write-region-annotate-functions which hooks at a lower-level.
+  (add-hook 'write-region-annotate-functions 'tar-write-region-annotate nil t)
   (add-hook 'kill-buffer-hook 'tar-mode-kill-buffer-hook nil t)
   (add-hook 'change-major-mode-hook 'tar-change-major-mode-hook nil t)
   ;; Tar data is made of bytes, not chars.
@@ -1213,18 +1216,15 @@ Leaves the region wide."
             (insert (make-string (- goal-end (point-max)) ?\0))))))))
 
 
-;; Used in write-contents-functions to write tar-files out correctly.
-(defun tar-mode-write-contents ()
-  (save-excursion
-    (unwind-protect
-       (progn
-         (when (tar-data-swapped-p) (tar-swap-data))
-         (write-region nil nil buffer-file-name nil t))
-      (unless (tar-data-swapped-p) (tar-swap-data))))
+;; Used in write-region-annotate-functions to write tar-files out correctly.
+(defun tar-write-region-annotate (start end)
+  ;; When called from write-file (and auto-save), `start' is nil.
+  ;; When called from M-x write-region, we assume the user wants to save
+  ;; (part of) the summary, not the tar data.
+  (unless (or start (not (tar-data-swapped-p)))
   (tar-clear-modification-flags)
-  (set-buffer-modified-p nil)
-  ;; Return t because we've written the file.
-  t)
+    (set-buffer tar-data-buffer)
+    nil))
 
 (provide 'tar-mode)