From 25a9ba5e27b0e67a6f7de895ccd11688af273773 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Tue, 7 Jul 2015 16:53:23 +0430 Subject: [PATCH] session management added --- lib/extensions/editor/init.el | 4 +- lib/extensions/editor/session-management.el | 47 +++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 lib/extensions/editor/session-management.el diff --git a/lib/extensions/editor/init.el b/lib/extensions/editor/init.el index 47ad23e..8cb73f5 100644 --- a/lib/extensions/editor/init.el +++ b/lib/extensions/editor/init.el @@ -111,6 +111,6 @@ ;; Load about submenu (require 'extensions/editor/version) (require 'extensions/editor/about) - (require 'extensions/editor/custom)) - + (require 'extensions/editor/custom) + (require 'extensions/editor/session-management)) (provide 'extensions/editor/init) diff --git a/lib/extensions/editor/session-management.el b/lib/extensions/editor/session-management.el new file mode 100644 index 0000000..bd1ce51 --- /dev/null +++ b/lib/extensions/editor/session-management.el @@ -0,0 +1,47 @@ +;; --------------------------------------------------------------------- +;; Variables +;; --------------------------------------------------------------------- +(defvar my-desktop-session-dir + (concat (concat default-directory "~/.tmp/sessions/")) + "*Directory to save desktop sessions in") + +(defvar my-desktop-session-name-hist nil + "Desktop session name history") + + +;; --------------------------------------------------------------------- +;; Functions +;; --------------------------------------------------------------------- + +(defun my-desktop-save (&optional name) + "Save desktop with a name." + (interactive) + (unless name + (setq name (my-desktop-get-session-name "Save session as: "))) + (make-directory (concat my-desktop-session-dir name) t) + (desktop-save (concat my-desktop-session-dir name) t)) + +(defun my-desktop-read (&optional name) + "Read desktop with a name." + (interactive) + (unless name + (setq name (my-desktop-get-session-name "Load session: "))) + (desktop-read (concat my-desktop-session-dir name))) + +(defun my-desktop-get-session-name (prompt) + (completing-read prompt (and (file-exists-p my-desktop-session-dir) + (directory-files my-desktop-session-dir)) + nil nil nil my-desktop-session-name-hist)) + +(define-key-after global-map + [menu-bar file load-session] '("Load Session" . my-desktop-read) + 'dired) + +(define-key-after + global-map [menu-bar file save-session] + '("Save Session" . my-desktop-save) 'load-session) + +(define-key global-map (kbd "") 'my-desktop-read) +(define-key global-map (kbd "") 'my-desktop-save) + +(provide 'extensions/editor/session-management)