diff options
| author | Juri Linkov | 2014-06-25 02:23:41 +0300 |
|---|---|---|
| committer | Juri Linkov | 2014-06-25 02:23:41 +0300 |
| commit | a4d8b73e1cb0f9c59a4f93170248dd85c5ee680c (patch) | |
| tree | 1729aa22cfaebeeb13b7f2bedd9c0bed433399eb | |
| parent | 370ceb22102e02a25516e43a61da0c9a9d6e1579 (diff) | |
| download | emacs-a4d8b73e1cb0f9c59a4f93170248dd85c5ee680c.tar.gz emacs-a4d8b73e1cb0f9c59a4f93170248dd85c5ee680c.zip | |
* lisp/desktop.el (desktop-auto-save-enable)
(desktop-auto-save-disable): New functions.
(desktop-save-mode, desktop-auto-save-timeout): Use them.
(desktop-read): Disable the autosave before loading the desktop,
and enable afterwards.
Fixes: debbugs:17351
| -rw-r--r-- | lisp/ChangeLog | 8 | ||||
| -rw-r--r-- | lisp/desktop.el | 26 |
2 files changed, 26 insertions, 8 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index da8d49ae0a9..5981c50af77 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,11 @@ | |||
| 1 | 2014-06-24 Juri Linkov <juri@jurta.org> | ||
| 2 | |||
| 3 | * desktop.el (desktop-auto-save-enable) | ||
| 4 | (desktop-auto-save-disable): New functions. | ||
| 5 | (desktop-save-mode, desktop-auto-save-timeout): Use them. | ||
| 6 | (desktop-read): Disable the autosave before loading the desktop, | ||
| 7 | and enable afterwards. (Bug#17351) | ||
| 8 | |||
| 1 | 2014-06-24 Stefan Monnier <monnier@iro.umontreal.ca> | 9 | 2014-06-24 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 10 | ||
| 3 | Fix some indentation problem with \; and pipes (bug#17842). | 11 | Fix some indentation problem with \; and pipes (bug#17842). |
diff --git a/lisp/desktop.el b/lisp/desktop.el index d420a6416a9..26d288bf9cd 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el | |||
| @@ -174,11 +174,8 @@ For further details, see info node `(emacs)Saving Emacs Sessions'." | |||
| 174 | :global t | 174 | :global t |
| 175 | :group 'desktop | 175 | :group 'desktop |
| 176 | (if desktop-save-mode | 176 | (if desktop-save-mode |
| 177 | (when (and (integerp desktop-auto-save-timeout) | 177 | (desktop-auto-save-enable) |
| 178 | (> desktop-auto-save-timeout 0)) | 178 | (desktop-auto-save-disable))) |
| 179 | (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)) | ||
| 180 | (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) | ||
| 181 | (desktop-auto-save-cancel-timer))) | ||
| 182 | 179 | ||
| 183 | (defun desktop-save-mode-off () | 180 | (defun desktop-save-mode-off () |
| 184 | "Disable `desktop-save-mode'. Provided for use in hooks." | 181 | "Disable `desktop-save-mode'. Provided for use in hooks." |
| @@ -219,9 +216,8 @@ Zero or nil means disable auto-saving due to idleness." | |||
| 219 | (set-default symbol value) | 216 | (set-default symbol value) |
| 220 | (ignore-errors | 217 | (ignore-errors |
| 221 | (if (and (integerp value) (> value 0)) | 218 | (if (and (integerp value) (> value 0)) |
| 222 | (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) | 219 | (desktop-auto-save-enable value) |
| 223 | (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) | 220 | (desktop-auto-save-disable)))) |
| 224 | (desktop-auto-save-cancel-timer)))) | ||
| 225 | :group 'desktop | 221 | :group 'desktop |
| 226 | :version "24.4") | 222 | :version "24.4") |
| 227 | 223 | ||
| @@ -1132,6 +1128,10 @@ Using it may cause conflicts. Use it anyway? " owner))))) | |||
| 1132 | (unless desktop-dirname | 1128 | (unless desktop-dirname |
| 1133 | (message "Desktop file in use; not loaded."))) | 1129 | (message "Desktop file in use; not loaded."))) |
| 1134 | (desktop-lazy-abort) | 1130 | (desktop-lazy-abort) |
| 1131 | ;; Temporarily disable the autosave that will leave it | ||
| 1132 | ;; disabled when loading the desktop fails with errors, | ||
| 1133 | ;; thus not overwriting the desktop with broken contents. | ||
| 1134 | (desktop-auto-save-disable) | ||
| 1135 | ;; Evaluate desktop buffer and remember when it was modified. | 1135 | ;; Evaluate desktop buffer and remember when it was modified. |
| 1136 | (load (desktop-full-file-name) t t t) | 1136 | (load (desktop-full-file-name) t t t) |
| 1137 | (setq desktop-file-modtime (nth 5 (file-attributes (desktop-full-file-name)))) | 1137 | (setq desktop-file-modtime (nth 5 (file-attributes (desktop-full-file-name)))) |
| @@ -1184,6 +1184,7 @@ Using it may cause conflicts. Use it anyway? " owner))))) | |||
| 1184 | (set-window-prev-buffers window nil) | 1184 | (set-window-prev-buffers window nil) |
| 1185 | (set-window-next-buffers window nil)))) | 1185 | (set-window-next-buffers window nil)))) |
| 1186 | (setq desktop-saved-frameset nil) | 1186 | (setq desktop-saved-frameset nil) |
| 1187 | (desktop-auto-save-enable) | ||
| 1187 | t)) | 1188 | t)) |
| 1188 | ;; No desktop file found. | 1189 | ;; No desktop file found. |
| 1189 | (desktop-clear) | 1190 | (desktop-clear) |
| @@ -1230,6 +1231,15 @@ directory DIRNAME." | |||
| 1230 | ;; Auto-Saving. | 1231 | ;; Auto-Saving. |
| 1231 | (defvar desktop-auto-save-timer nil) | 1232 | (defvar desktop-auto-save-timer nil) |
| 1232 | 1233 | ||
| 1234 | (defun desktop-auto-save-enable (&optional timeout) | ||
| 1235 | (when (and (integerp (or timeout desktop-auto-save-timeout)) | ||
| 1236 | (> (or timeout desktop-auto-save-timeout) 0)) | ||
| 1237 | (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer))) | ||
| 1238 | |||
| 1239 | (defun desktop-auto-save-disable () | ||
| 1240 | (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) | ||
| 1241 | (desktop-auto-save-cancel-timer)) | ||
| 1242 | |||
| 1233 | (defun desktop-auto-save () | 1243 | (defun desktop-auto-save () |
| 1234 | "Save the desktop periodically. | 1244 | "Save the desktop periodically. |
| 1235 | Called by the timer created in `desktop-auto-save-set-timer'." | 1245 | Called by the timer created in `desktop-auto-save-set-timer'." |