双击同一emacs框架中的打开.txt文件(如果当前打开)

时间:2011-10-25 16:53:14

标签: windows emacs

当我在Windows中双击打开它们时,我想将emacs设置为文本文件的默认编辑器。 但是我想在emacs(即帧)的相同运行实例中打开它们作为缓冲区(如果有的话)。 现在,该行为将打开另一个emacs实例(即另一个emacs框架)。

有谁知道init.el中的哪个规范会允许这种行为?

2 个答案:

答案 0 :(得分:9)

我一直在使用this guy's方法,这是向注册表添加条目的替代方法。我在这里重现了他的步骤:

  • 创建以下批处理文件'runemacsclientw.bat'。
::::::::::::::::::::::::::::::::::::::::::::::::::
:::
::: Emacsclient startup script runemacsclientw.bat
::: Robert Adesam, robert@adesam.se
::: http://www.adesam.se/robert/
:::
::: N.B. Alot of this is reused from other Emacs
::: users that have published stuff on the
::: Internet. Thank you! :)
::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
:: Emacs binaries...
set binpath=c:\Program Files\emacs\bin
:: If no arg is given set filename to c:\
if "%~1"=="" (
  set filename=c:\
) else (
  set filename=%~1
)
:: Run Emacsclient
"%binpath%\emacsclientw.exe" --no-wait --alternate-editor="%binpath%\runemacs.exe" "%filename%"
  • 使用bat to exe converter将bat文件转换为exe
    • 选择批处理文件。
    • 检查'隐身应用程序'。
    • 在“版本信息”下选择一个图标(如果你想让它变得清晰)
    • 编译并退出。
  • 将'runemacsclientw.bat'复制到... / emacs / bin。
  • 将文件类型与runemacsclientw.bat关联。
  • 将(server-start)添加到init文件。
  • 将〜/ .emacs.d / server的所有者(在%appdata%中)更改为当前用户(默认为本地管理员)。这将删除“不安全的目录〜/ .emacs.d / server”警告。

答案 1 :(得分:2)

首先快速浏览一下emacsclient文档。

然后在init.el文件中运行:

启动emacsclient服务器

(server-start)

接下来,我们将向注册表添加一些键,在所有文件的上下文菜单中为“使用Emacs编辑”选项提供。

添加以下键:

[HKEY_CLASSES_ROOT*\shell\Emacs] @="Edit with Emacs"

[HKEY_CLASSES_ROOT*\shell\Emacs\command] @="c:\Program Files (x86)\emacs-23.2\bin\emacsclientw.exe" --no-wait --alternate-editor="c:/Program Files (x86)/emacs-23.2/bin/runemacs.exe" "%1"

引号是字面值,应包括在内。您可能需要稍微使用路径以适应您的环境。

至于双击行为,需要知道要添加哪些注册表项。如果您知道他们应该能够将这个答案概括为您想要的行为。

程序emacsclient会将文件压缩成emacs的运行副本(前提是你运行'server-start'),或者如果没有现有副本,它将运行随“alternate-editor”选项提供的命令。 / p>