在vim
中我一直使用vim-session来管理我的项目session,主要来创建项目session,切换,切换前/关闭前当前session的最新状态(比如几个split,当前光标在那个split内的哪个位置)。目前我使用的是stackoverflow上找到的一段代码,但是目前有如下几个问题:
-
读取项目session是使用列出目录下文件的方式,因此会有.
, ..
这两个文件夹指向符号需要去掉。
-
关闭emacs和切换session前并不会自动保存最新的状态,下次载入还是最后一次手动运行save
的状态。
-
切换是会提示desktop file已经被使用的问题。
希望有人能帮解决下,或者提供一个更好的方案。 谢啦:)
1 个赞
相关代码
;; session manager
;; http://stackoverflow.com/a/849180/2326199
(defvar my-desktop-session-dir
(concat (getenv "HOME") "/.emacs.d/desktop-sessions/")
"*Directory to save desktop sessions in")
(defvar my-desktop-session-name-hist nil
"Desktop session name history")
(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))
(evil-leader/set-key "m s" 'my-desktop-save)
(evil-leader/set-key "l s" 'my-desktop-read)
直接用 desktop-save-mode
有什么问题吗?Emacs 手册里有介绍 (emacs) Saving Emacs Sessions。
stackoverflow的这份代码就是使用的desktop-save
, 只是他加入了存取多个desktop而不是只能存取上一个。然后碰到的问题在开头已经列出来了三个了。
你的这份文档我去看了,从文档看只能保存一份desktop,即last desktop