load and save central session done. (i like this feature)

This commit is contained in:
Sameer Rahmani 2012-08-11 20:13:12 +04:30
parent 30e30ddc1e
commit c51b9f28a9
1 changed files with 39 additions and 2 deletions

View File

@ -14,6 +14,16 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;; ---------------------------------------------------------------------
;; 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 "<f11>") 'my-desktop-read)
(define-key global-map (kbd "<f12>") '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")))