当前位置:  开发笔记 > 开发工具 > 正文

Emacs可以使用哪些备用会话管理器?

如何解决《Emacs可以使用哪些备用会话管理器?》经验,为你挑选了2个好方法。

我已经阅读了Emacs wiki中的页面,其中包含会话管理器插件列表.但在尝试了所有这些之后,我仍然对它们中的任何一个都不满意.

相比之下,VIM会话管理器按名称保存和加载会话,这对我来说是最重要的功能之一.

特别是,我想要一个Emacs的会话管理器:

按名称管理会话

保存标签,屏幕,框架等.

我正在尝试使用Emacs,因为它具有非常好的功能,但是一个好的会话管理器对我的工作流程很重要.


有关:

Emacs:在启动时重新打开上次会话的缓冲区?

在Emacs中保存窗口配置

scottfrazer.. 34

由于您不喜欢desktop.el的基本功能,因此请在其周围添加一些elisp:

(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))

编辑:

获得一些投票,所以添加完成阅读和历史等细节



1> scottfrazer..:

由于您不喜欢desktop.el的基本功能,因此请在其周围添加一些elisp:

(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))

编辑:

获得一些投票,所以添加完成阅读和历史等细节



2> Török Gábor..:

已经回答:

Emacs:在启动时从上一个会话重新打开缓冲区吗?

在Emacs中保存窗口配置

详细解释您的要求使我们能够为您提供更具体的解决方案。

编辑

桌面模式允许您进行多个会话-保存的桌面不是名称而是基于目录。

在“ 保存Emacs会话”一章中:

您可以保存当前桌面并通过键入以下内容重新加载保存在另一个目录中的一个 M-x desktop-change-dir.

此外,desktop-path变量允许您定义目录列表以搜索已保存的桌面。

编辑2

scottfrazer发送的Elisp代码段允许您命名会话,因为在后台它将名称转换为桌面模式的正确目录名称。

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有