7

我在 Windows 8 上使用 Emacs 24.3。我希望能够右键单击文件并选择“使用 Emacs 编辑”并在现有的 emacs 框架中打开文件。到目前为止我所做的所有步骤都列在下面。其中大部分内容来自Windows 的 Emacs 文档页面

以下是我用来将“使用 Emacs 编辑”添加到上下文菜单中的注册表项:

[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\openwemacs]
@="&Edit with Emacs"
[HKEY_CLASSES_ROOT\*\shell\openwemacs\command]
@="C:\\Portable Software\\emacs-24.3\\bin\\emacsclientw.exe -n \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs]
@="Edit &with Emacs"
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs\command]
@="C:\\Portable Software\\emacs-24.3\\bin\\emacsclientw.exe --alternate-editor=\"C:\\Portable Software\\emacs-24.3\\bin\\runemacs.exe\" -n \"%1\""

我还将ALTERNATE_EDITOR环境变量设置为C:\\path\\to\\runemacs.exe

在我的开头,我根据这个答案.emacs添加了以下代码。

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

添加它可以消除打开第二个文件时出现的“服务器已在运行”错误,但它仍会在新框架中打开。

那么让emacs在现有框架中打开新文件我缺少什么?

4

3 回答 3

5

我在尝试synctex使用 SumatraPDF 修复时意外地发现了这一点。看起来除了ALTERNATE_EDITOR指向的环境变量之外runemacs.exe,您还必须创建一个EMACS_SERVER_FILE指向服务器文件的环境变量(我的存储在.emacs.d\server目录中)。一旦我这样做了,我告诉用 Emacs 打开的文件会在现有框架中打开,而不是创建自己的。

于 2014-05-05T23:14:32.193 回答
0

This worked for me.

Create C:\Program Files\runemacs.bat with the following contents:

@echo off

:: Set the path to where the Emacs binaries are
set binpath=C:\Program Files\emacs-26.1-x86_64\bin

:: If no arg is given edit this file
if "%~1"=="" (
  set filename="C:\Program Files\runemacs.bat"
) else (
  set filename="%~1"
)

:: Run Emacsclient
"%binpath%\emacsclientw.exe" --no-wait --alternate-editor="%binpath%\runemacs.exe" %filename%

And open all files via C:\Program Files\runemacs.bat instead of C:\Program Files\emacs-26.1-x86_64\bin\runemacs.exe.

于 2019-04-12T06:32:16.350 回答
-1

似乎 emacsclient 每次都无法与服务器连接并启动一个新的 emacs 实例。您可能需要取消阻止已安装的任何软件防火墙中的某些内容。

于 2013-03-25T03:21:48.350 回答