Mercurial > emacs
changeset 100935:e55ce6002e3d
(tar-mode, tar-mode-write-contents)
(tar-write-region-annotate): Undo Andreas's last change.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 07 Jan 2009 02:15:37 +0000 |
parents | ba087903e9ba |
children | 5c5e6d041634 |
files | lisp/ChangeLog lisp/tar-mode.el |
diffstat | 2 files changed, 17 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Jan 06 11:39:20 2009 +0000 +++ b/lisp/ChangeLog Wed Jan 07 02:15:37 2009 +0000 @@ -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)
--- a/lisp/tar-mode.el Tue Jan 06 11:39:20 2009 +0000 +++ b/lisp/tar-mode.el Wed Jan 07 02:15:37 2009 +0000 @@ -637,7 +637,10 @@ ;; 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 @@ (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)