Emacs中用场景恢复

一 desktop.el

        场景恢复,基本功能之一就是打开那些上一次你曾经打开过的文。这个功能也是最常用的。desktop.el插件能为Emacs实现该功能:

desktop.el 下载地址:

http://repo.or.cz/w/emacs.git/blob/HEAD:/lisp/desktop.el

desktop.el 相关的说明:

http://www.emacswiki.org/emacs/DeskTop

       实质上我们无需额外安装这个插件,因为新版的Emacs已经自带了这个插件。其官方配置方式在上面第二个URL所链接的页面有说明。简单来说,官方的配置方式就是:

       在“.emacs”文件中加入:(desktop-save-mode 1)  即可。

我在使用这个简单官方配置时,发现了两个问题

1 无论我在那里打开Emacs,她总是会打开上一次最后显示在编辑界面的那个文件。尽管我当前目录在另一个不同的工程中。

2 每次关闭Emacs时,她都提示是否要保存桌面信息。我想让她智能化的自动保存。

于是,我在.emacs文件中修改了(desktop-save-mode 1)这个设置,改成如下这样:

(when (file-exists-p "./.emacs.desktop")
(desktop-change-dir "./")
(desktop-release-lock "./")
(desktop-save-mode 1))

“.eamcs.desktop”就是桌面信息文件。这个设置的功能就是:检查当前目录是否有桌面信息文件。如果有则把当前目录设置为桌面目录( 默认是"~"); desktop-change-dir是用来设置桌面路径的;desktop-release-lock是用来解开互斥锁的,因为desktop.el原来的设计是全局性的(即多个工程共用信息文件,所以要有一个输入互斥)。desktop-save-mode可以用来设置自动保存desktop信息。

    因desktop-change-dir本身有读入桌面信息文件的功能,因为该函数最后调用了desktop-read。下面是desktop-change-dir的完整代码:

;; ----------------------------------------------------------------------------
;;;###autoload
(defun desktop-change-dir (dirname)
  "Change to desktop saved in DIRNAME.
Kill the desktop as specified by variables `desktop-save-mode' and
`desktop-save', then clear the desktop and load the desktop file in
directory DIRNAME."
  (interactive "DChange to directory: ")
  (setq dirname (file-name-as-directory (expand-file-name dirname desktop-dirname)))
  (desktop-kill)
  (desktop-clear)
  (desktop-read dirname))


(desktop-release-lock "./")的实质作用是删除当前目录的".emacs.desktop.lock"文件.因desktop.el的互斥信息实质放在一个名为".emacs.desktop.lock"的文件中。

使用上面这个设置方法时,第一次生成desktop信息,是要自己手动完成的。用 M-x desktop-save-mode 然后指定目录即可。


好,暂时写到这里。希望本文能确实帮上忙。



转载于:https://my.oschina.net/daoren/blog/350819

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值