Customization tips for emacs daemon

使用Emacs daemon使得配置变得更加复杂了,因为在启动daemon的时候,没有任何X Frame生成,某些对X Frame的定制代码可能出错,比如:

(setq x-select-enable-clipboard t)

这段代码一定要在X Frame生成之后运行,解决方法是把定制添加到after-make-frame-functions这个hook里面。

(add-hook 'after-make-frame-functions
          (lambda (frame)
            (with-selected-frame frame
              (when window-system
                (scroll-bar-mode -1)
                (setq x-select-enable-clipboard t)))))

2 thoughts on “Customization tips for emacs daemon

  1. 发现如果这样配置以后,正常运行emacs有一些配置不会被执行了, 所以我就自己加了一个这样的代码,你看看没问题给大家分享一下把。

    (add-hook 'after-make-frame-functions
    (lambda (frame)
    (with-selected-frame frame
    (when window-system
    (config-not-in-tty-mode)
    ))))

    +(if (equal (daemonp) nil)
    + ;; 非Daemon模式
    + (config-not-in-tty-mode))

    还有一个问题,就是我在emacsclient -t 的时候报错
    k@ubuntu:~$ emacsclient -t .emacs
    *ERROR*: Cannot open termcap database file

    怎么解决呢?

  2. 不好意思,我偷懒了,我使用的完整配置是

    (if (and (fboundp 'daemonp) (daemonp))
    (add-hook 'after-make-frame-functions
    (lambda (frame)
    (with-selected-frame frame
    (set-fontset-font "fontset-default"
    'chinese-gbk "AR PL UKai CN 20"))))
    (set-fontset-font "fontset-default" 'chinese-gbk "AR PL UKai CN 20"))

    和你的基本一样。

    emacsclient启动报错,我想你是自己编译的emacs吧,应该是系统里缺少ncurses的开发包,不同的系统可能包的名字不一样。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据