我使用启动 emacs 服务器
emacs --daemon
Run Code Online (Sandbox Code Playgroud)
然后使用打开文件
emacsclient filename.ext
Run Code Online (Sandbox Code Playgroud)
但第一个文件必须使用打开
emacsclient -c filename.ext
Run Code Online (Sandbox Code Playgroud)
为了创建一个新框架,以后可以在不使用-cemacsclient 的命令行标志的情况下由后续文件使用该框架。
我想自动化这个。“如果没有 emacs 框架,emacsclient 应该创建一个框架,否则它应该使用当前框架”。怎么做到呢?
我的 init 文件被设置成我的.emacs文件是一个符号链接,指向一个特定于操作系统的 init,它依次加载主 init 文件和不受操作系统影响的配置。我对非服务器 emacs 的这个设置没有问题。
但是,在使用 emacsclient 时它不能正常工作。例如,我有一个设置,org-mode以便在 OSX 上的终端S-Tab中映射到 backtab 以便它正常工作,而不是抛出有关未定义键的错误。如果我不使用 emacs 服务器,此设置工作正常。当我使用 emacsclient 时,我收到未定义键绑定的错误。
我知道我所有的 init 文件都被正确加载,因为当服务器启动时,我放入文件中的任何(消息“无论如何”)行都显示正常。所以它不像 emacs 服务器以某种方式丢失了文件。就好像为服务器加载了映射的键,但在客户端连接时忘记了。我什eval至在 emacsclient 缓冲区中尝试过一次键映射,但没有错误,但没有更改。有任何想法吗?
(顺便说一句,--debug-init没有显示任何奇怪的东西。一切都在正确加载。)
我直接使用 emacsclient 而不是 emacs。假设我想在 emacsclient 中使用命令“mu4e”(运行一个优秀的小型电子邮件客户端)启动一个框架。对于 emacs,我会简单地做emacs -f mu4e。但是在 emacsclient 中,如果我尝试看似等效的方法:
emacsclient -c --eval mu4e
我明白了:
*ERROR*: Symbol's value as variable is void: mu4e
显然,我需要评估一个 lisp 表达式来调用函数 mu4e,但我不知道如何做到这一点。谷歌搜索似乎没有产生任何有用的东西。