@ -1,10 +1,17 @@
;; save/restore opened files
( desktop-save-mode 1 )
;; This is needed only for theming. Desktop frames hold on to color values for some reason. We don't
;; care too much about losing our frame configurations so this is okay
( setq desktop-restore-frames nil )
;; Used to know whether or not to show the last selected desktop at the top of the desktop list
( setq macoy-has-ever-selected-desktop-this-session nil )
( defcustom macoy-selected-desktop nil
" The last selected desktop. This is used to load the most recent desktop when starting Emacs " )
;;
;; Faster desktop creation/switching
;;
@ -19,15 +26,47 @@
( let ( ( new-desktop ( concat macoy-desktop-dir new-desktop-name ) ) )
( make-directory new-desktop )
( desktop-save new-desktop )
( customize-save-variable 'macoy-selected-desktop new-desktop )
( message " Created desktop at %s " new-desktop )
( setq macoy-has-ever-selected-desktop-this-session t )
) )
( defun macoy-get-desktop-list ( )
( let ( ( desktop-list ( remove " . "
( remove " .. "
( directory-files macoy-desktop-dir ) ) ) ) )
;; If we've never picked a desktop this session, put the last used desktop at the top of the
;; list. This is a workaround while I don't know how to make my desktop switch happen after
;; the regular emacs behavior picks the desktop during startup.
( if ( and ( not macoy-has-ever-selected-desktop-this-session )
macoy-selected-desktop )
( progn
( setq desktop-list ( remove ( file-name-nondirectory macoy-selected-desktop ) desktop-list ) )
( add-to-list 'desktop-list ( file-name-nondirectory macoy-selected-desktop ) )
)
desktop-list
) ) )
( defun macoy-switch-desktop ( )
" Use ido to list desktops to switch to "
" Use ido to list desktops to switch to "
( interactive )
( desktop-change-dir
( concat macoy-desktop-dir
( ido-completing-read " Switch Desktop: "
( remove " . "
( remove " .. "
( directory-files macoy-desktop-dir ) ) ) ) ) ) )
( let ( ( selected-desktop
( concat macoy-desktop-dir
( ido-completing-read " Switch Desktop: "
( macoy-get-desktop-list ) ) ) ) )
( message " %s " selected-desktop )
( customize-save-variable 'macoy-selected-desktop selected-desktop )
( desktop-change-dir selected-desktop )
( setq macoy-has-ever-selected-desktop-this-session t )
)
)
( defun macoy-reload-last-desktop ( )
" Load the last desktop which was saved or switched to via the macoy-desktop system "
( interactive )
( desktop-change-dir macoy-selected-desktop )
( message " Restored desktop %s " macoy-selected-desktop )
( setq macoy-has-ever-selected-desktop-this-session t )
)
( global-set-key ( kbd " M-b " ) 'macoy-reload-last-desktop )