我在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在现有框架中打开新文件?
答案 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
打开所有文件。