diff --git a/src/lib/menu.el b/src/lib/menu.el
index 0b525f5..407b15d 100644
--- a/src/lib/menu.el
+++ b/src/lib/menu.el
@@ -14,6 +14,16 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see .
+;; ---------------------------------------------------------------------
+;; Variables
+;; ---------------------------------------------------------------------
+(defvar my-desktop-session-dir
+ (concat (getenv "HOME") "/.tmp/sessions/")
+ "*Directory to save desktop sessions in")
+
+(defvar my-desktop-session-name-hist nil
+ "Desktop session name history")
+
;; ---------------------------------------------------------------------
;; Functions
;; ---------------------------------------------------------------------
@@ -40,12 +50,39 @@
(desktop-save-in-desktop-dir)
)
)
+
+(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)
+ )
+
(defun menu/init-menu () "Initializing Kuso IDE menu"
;; New Project Menu
(interactive)
(define-key-after global-map [menu-bar file new-proj] (cons "New Project" (make-sparse-keymap "new project")) 'new-file)
- (define-key-after global-map [menu-bar file load-session] '("Load Session" . desktop-change-dir) 'new-proj)
- (define-key-after global-map [menu-bar file save-session] '("Save Session" . save-session) 'load-session)
+ (define-key-after global-map [menu-bar file load-session] '("Load Session" . my-desktop-read) 'new-proj)
+ (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)
;; New Project sub menus
(define-key-after global-map [menu-bar file new-proj cproj] (cons "C/C++" (make-sparse-keymap "c-cpp-proj")))