在Windows上设置Emacs以启动单个实例并在现有实例中打开文件


18

我对完整的Windows体验特别感兴趣,包括:

  • 如果尚未启动服务器,则自动启动服务器
  • 如何调用emacs以便利用服务器(例如从命令行或第三方工具)
  • 上下文菜单支持(例如,右键单击文件并将其发送到emacs进行查看和编辑)

这样的支持在任何地方都可用吗?

Answers:


21

如果尚未启动服务器,则自动启动服务器

对于任何Emacs构建,这应该是相同的。将此代码段添加到您的 .emacs或中.emacs.d/init.el

(require 'server)
(unless (server-running-p)
  (server-start)) 

然后只需运行runemacs.exe构建随附的可执行文件来启动emacs 。

如何调用emacs以便利用服务器(例如从命令行或第三方工具)

Emacs的Windows版本emacsclientw.exebin/目录中带有可执行文件 。使用该可执行文件的完整路径作为您需要配置的任何第三方工具的首选编辑器。

上下文菜单支持(例如,右键单击文件并将其发送到emacs进行查看和编辑)

  1. 右键单击文件,然后选择Open With -> Select Default Program
  2. 在弹出的窗口中,导航至emacsclientw.exe上述可执行文件,然后选择它。
  3. 如果您不希望Emacs成为默认值,请再次执行步骤1和2,选择其他程序作为默认值。

emacsclientw.exe 现在将始终是上下文菜单中的一个选项。


谢谢-关于服务器的要点,我没有想到。
cristobalito

关于emacsclient.exe,难道不是emacsclientw.exe吗?另外,我认为如果服务器未运行,则必须使用-a标志运行此操作以指定备用编辑器。
cristobalito

为了使服务器能够正确使用我的配置,我还必须添加一个EMACS_SERVER_FILE指向我的.emacs.d\server目录的环境变量。
瑞安

@Ryan我能够在不需要环境变量的情况下使它正常工作-仅需确保服务器正在运行即可。
cristobalito 2014年

嗯,我估计(server-running-p)收益:other在Windows(甚至之后尝试设置,EMACS_SERVER_FILE的环境变量。
Kaushal莫迪

5

如果尚未启动服务器,则自动启动服务器

我强烈建议设置环境变量ALTERNATE_EDITORrunemacs.exe。这样,即使没有服务器,您也可以始终调用emacsclient。只需将(服务器启动)添加到您的init文件中即可。如果服务器不存在,则emacsclient会调用本例ALTERNATE_EDITOR中的emacs。由于emace在init文件中启动服务器,因此对emacsclient的任何新调用都是即时的。

如何调用emacs以便利用服务器(例如从命令行或第三方工具)

使用emacsclientw.exe -c -n "your_file"到开放your_file。该-c参数创建一个新的图形框架,并-n允许您关闭该框架而不会丢失服务器状态。您甚至可以在没有文件名的情况下调用它来打开*Scratch*缓冲区。也可以通过桌面快捷方式工作。emacsclient.exe每次调用时,使用(请注意缺少的w)都会弹出命令提示符几秒钟。

添加到上下文菜单

Emacswiki对增加Emacs的上下文菜单中选择一个漂亮的页面在这里。它涉及编辑注册表节点,HKEY_CLASSES_ROOT\*以添加要使用emacs打开的操作。


5

其他人回答了服务器部分。这是我做的,让UNIX / GNU / Linux的类似工具,如grepdiff

  1. 安装Cygwin(一次性操作)。
  2. 加载cygwin-mount.el
  3. 加载setup-cygwin.el

但是,请注意,有不同版本的Cygwin。我使用的是较旧的版本(不知道哪个,AFAICT,这是个谜)。不知道您是否会在使用最新版本时遇到问题。

也可以看看:


注意:请勿使用cygwin EMACS。从ftp.gnu.org/gnu/emacs/windows
-M Smith

我不建议安装Cygwin,因为仅使用某些gnu工具可能会产生不良的副作用(例如破坏其他gnu Windows端口,如emacs,gcc等)。而是安装GnuWin32端口。您可以安装整个软件包或选择的所选工具。

@Seki-是的,Eli Zaretskii说的和你一样。我只能说我没有问题(并且对您声称它破坏了Emacs表示怀疑)。但是(a)我使用的是旧版Cygwin,并且(b)我不使用Cygwin提供的大多数UNIX / GNU Linux实用程序。
Drew

@drew:也许过多地谈论“破坏” emacs,“引起奇怪的行为”会更好。例如,如果不仔细检查Cygwin工具的路径,则Cygwin Make将使MinGW工具链失效,如果没有其他工具,则默认不使用Cygwin工具。它不仅限于Make,许多其他工具也无法混合使用,有时指出问题是很微妙的。简而言之,要么拥有Emacs的本机端口,最好拥有本机的GNU工具,或者可以使用包括其emacs在内的整个Cygwin发行版。

@Seki:所以看来您的主要观点是Cygwin和MingGW的配合不好。这对我来说并不奇怪。(FWIW,对于使用MingGW代替Cygwin,我没有什么反对。对我来说,安装Cygwin很简单,而且我使用的不足是遇到问题。)
Drew
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.