一个emacs.d / init.el适合非x会话和x-session

时间:2017-02-11 04:35:39

标签: emacs xorg

当我在没有运行x-server的情况下启动emacs时,init.el中的某些内容会失败,例如:

(require 'sr-speedbar)
如果没有图形服务器,

是不恰当的,我应该在那里开始

(require 'speedbar)

emacs专家建议将emacs作为基于x的模式从no-x模式调用的实例中适当的init.el配置是什么?是否有既定的方式在任何一种制度或优雅的后备下提供一般的平行经验?

1 个答案:

答案 0 :(得分:2)

很大程度上取决于您通常运行的环境和级别 控制你需要。例如,如果您只是想区分 在完全支持图形的环境下运行,您可以使用display-graphic-p e.g。

(when (display-graphic-p)
  ;; do stuff which needs a graphic display)

但是,如果需要区分不同的平台,例如何时 在OSX下运行,你需要像

这样的东西
(when (eq system-type 'darwin)
  ;; do stuff which should only run when on OSX'))

最后,对于您只需要在运行时配置某些内容的情况 在特定的窗口系统下,您可以使用类似

的内容
(when (eq window-system 'x)
  ;; only under X window frame))

然而,有一些细微之处需要注意。其中一些变量如此 因为窗口系统是对当前帧的测试。所以,你需要考虑一下 当代码执行时。例如,如果您将emacs作为守护程序运行,那会是什么 加载init时窗口系统的值是多少?同样,如果你 使用emacs作为守护进程或使用emacsclient打开一个可能被打开的新“框架” 无论是图形还是文本框架。有时,您可能需要创建一个新的 包含你想要做的事情的命令,并在这一点上进行测试 执行该命令,以便它可以响应您所在的特定帧 执行命令时。