Mercurial > emacs
changeset 5553:22a65d8c0b9a
(Fdo_auto_save): If auto save times out, don't try again for 20 minutes.
(Fclear_buffer_auto_save_failure): New function.
(Fset_buffer_auto_saved): Clear auto_save_failure_time.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 10 Jan 1994 22:24:26 +0000 |
parents | e8d95be8bc19 |
children | 0ac0776c23af |
files | src/fileio.c |
diffstat | 1 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/fileio.c Mon Jan 10 22:20:56 1994 +0000 +++ b/src/fileio.c Mon Jan 10 22:24:26 1994 +0000 @@ -3367,6 +3367,15 @@ && (do_handled_files || NILP (Ffind_file_name_handler (b->auto_save_file_name)))) { + EMACS_TIME before_time, after_time; + + EMACS_GET_TIME (before_time); + + /* If we had a failure, don't try again for 20 minutes. */ + if (b->auto_save_failure_time >= 0 + && EMACS_SECS (before_time) - b->auto_save_failure_time < 1200) + continue; + if ((XFASTINT (b->save_length) * 10 > (BUF_Z (b) - BUF_BEG (b)) * 13) /* A short file is likely to change a large fraction; @@ -3394,6 +3403,13 @@ b->auto_save_modified = BUF_MODIFF (b); XFASTINT (current_buffer->save_length) = Z - BEG; set_buffer_internal (old); + + EMACS_GET_TIME (after_time); + + /* If auto-save took more than 60 seconds, + assume it was an NFS failure that got a timeout. */ + if (EMACS_SECS (after_time) - EMACS_SECS (before_time) > 60) + b->auto_save_failure_time = EMACS_SECS (after_time); } } @@ -3417,6 +3433,16 @@ { current_buffer->auto_save_modified = MODIFF; XFASTINT (current_buffer->save_length) = Z - BEG; + current_buffer->auto_save_failure_time = -1; + return Qnil; +} + +DEFUN ("clear-buffer-auto-save-failure", Fclear_buffer_auto_save_failure, + Sclear_buffer_auto_save_failure, 0, 0, 0, + "Clear any record of a recent auto-save failure in the current buffer.") + () +{ + current_buffer->auto_save_failure_time = -1; return Qnil; } @@ -3849,6 +3875,7 @@ defsubr (&Sset_visited_file_modtime); defsubr (&Sdo_auto_save); defsubr (&Sset_buffer_auto_saved); + defsubr (&Sclear_buffer_auto_save_failure); defsubr (&Srecent_auto_save_p); defsubr (&Sread_file_name_internal);