在现有emacs框架中打开文件(Windows)

时间:2013-03-25 01:12:34

标签: windows emacs emacs24

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

以下是我用于在我的上下文菜单中添加“使用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开始时,我已根据this answer添加了以下代码。

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

添加那个在打开第二个文件时摆脱“服务器已经运行”错误,但它仍然在新框架中打开。

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

3 个答案:

答案 0 :(得分:4)

我在尝试使用SumatraPDF修复synctex时偶然发现了这一点。除了指向ALTERNATE_EDITOR的{​​{1}}环境变量之外,您还必须创建一个指向服务器文件的runemacs.exe环境变量(我的存储在{{1}中}} 目录)。一旦我这样做,我告诉Open with Emacs的文件在现有框架中打开而不是创建自己的文件。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这对我有用。

使用以下内容创建C:\Program Files\runemacs.bat

@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%

然后通过C:\Program Files\runemacs.bat而不是C:\Program Files\emacs-26.1-x86_64\bin\runemacs.exe打开所有文件。