From 69a19ef574a30c39cecb886b8f553b438a0803c5 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 2 Jan 2016 15:07:01 -0500 Subject: [PATCH] wg: improve autosave + don't restore marks --- core/core-workgroups.el | 14 +++++++++++--- core/lib/defuns-workgroup.el | 12 ++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/core/core-workgroups.el b/core/core-workgroups.el index 51c3cfc17..4a90e061a 100644 --- a/core/core-workgroups.el +++ b/core/core-workgroups.el @@ -1,6 +1,11 @@ ;;; core-workgroups.el ;; see lib/workgroup-defuns.el +;; I use workgroups to accomplish two things: +;; 1. Vim-like tab emulation (type :tabs to see a list of tabs -- maybe I'll add some +;; code to make a permanent frame header to display these some day) +;; 2. Session persistence + (use-package workgroups2 :when (display-graphic-p) :init @@ -23,7 +28,7 @@ wg-restore-scroll-bars nil wg-restore-frame-position nil wg-restore-remote-buffers nil - ;; wg-restore-mark nil + wg-restore-mark nil ;; wg-restore-point-max nil wg-list-display-decor-divider " " @@ -56,8 +61,11 @@ lib/defuns-workgroups.el.") ;; Create a new workgroup on switch-project (setq projectile-switch-project-action 'narf/wg-projectile-switch-project)) - ;; Save the session every 10 minutes - (run-with-timer 0 600 'narf/wg-autosave) + ;; Save the session every 20 minutes + (defvar narf-wg-autosave-interval 1200) + (narf|wg-autosave-enable) + (add-hook! focus-out 'narf|wg-autosave-disable) + (add-hook! focus-in 'narf|wg-autosave-enable) ;; Don't mess with the modeline! (advice-add 'wg-change-modeline :override 'ignore) diff --git a/core/lib/defuns-workgroup.el b/core/lib/defuns-workgroup.el index 0bfc60cdc..23c851ded 100644 --- a/core/lib/defuns-workgroup.el +++ b/core/lib/defuns-workgroup.el @@ -179,10 +179,22 @@ (narf:workgroup-delete)) (evil-window-delete))) +(defvar narf-wg-autosave-interval 600) +(defvar narf-wg-autosave-timer nil) + ;;;###autoload (defun narf/wg-autosave () (when (and (wg-current-session t) (not (minibufferp))) (shut-up! (wg-save-session)))) +;;;###autoload +(defun narf|wg-autosave-enable () + (setq narf-wg-autosave-timer (run-with-timer 0 narf-wg-autosave-interval 'narf/wg-autosave))) + +;;;###autoload +(defun narf|wg-autosave-disable () + (cancel-timer narf-wg-autosave-timer) + (narf/wg-autosave)) + (provide 'defuns-workgroup) ;;; defuns-workgroup.el ends here