diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/desktop.el | 14 |
2 files changed, 20 insertions, 3 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a3f061a7d93..6e89afc6715 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2014-06-06 Juri Linkov <juri@jurta.org> + + * desktop.el: Activate auto-saving on window configuration changes. + (desktop-save-mode, desktop-auto-save-timeout): Add/remove + `desktop-auto-save-set-timer' to/from `window-configuration-change-hook'. + (desktop-auto-save-set-timer): Change REPEAT arg of + `run-with-idle-timer' from t to nil. + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00147.html + 2014-06-06 Santiago PayĆ i Miralta <santiagopim@gmail.com> * vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and diff --git a/lisp/desktop.el b/lisp/desktop.el index ded73c065f0..d420a6416a9 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -174,7 +174,10 @@ For further details, see info node `(emacs)Saving Emacs Sessions'." :global t :group 'desktop (if desktop-save-mode - (desktop-auto-save-set-timer) + (when (and (integerp desktop-auto-save-timeout) + (> desktop-auto-save-timeout 0)) + (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)) + (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) (desktop-auto-save-cancel-timer))) (defun desktop-save-mode-off () @@ -207,13 +210,18 @@ determine where the desktop is saved." (defcustom desktop-auto-save-timeout auto-save-timeout "Number of seconds idle time before auto-save of the desktop. +The idle timer activates auto-saving only when window configuration changes. This applies to an existing desktop file when `desktop-save-mode' is enabled. Zero or nil means disable auto-saving due to idleness." :type '(choice (const :tag "Off" nil) (integer :tag "Seconds")) :set (lambda (symbol value) (set-default symbol value) - (ignore-errors (desktop-auto-save-set-timer))) + (ignore-errors + (if (and (integerp value) (> value 0)) + (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) + (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) + (desktop-auto-save-cancel-timer)))) :group 'desktop :version "24.4") @@ -1244,7 +1252,7 @@ after that many seconds of idle time." (when (and (integerp desktop-auto-save-timeout) (> desktop-auto-save-timeout 0)) (setq desktop-auto-save-timer - (run-with-idle-timer desktop-auto-save-timeout t + (run-with-idle-timer desktop-auto-save-timeout nil 'desktop-auto-save)))) (defun desktop-auto-save-cancel-timer () |