如何让emacsclient找到它所执行的emacs守护进程

4

我希望能够将大部分编辑和Shell活动转移到Emacs中,这样我可以轻松地在不同的计算机上继续我的工作流程。我为不同的项目拥有不同的Emacs实例。例如,我启动:

emacs --daemon=project1
emacs --daemon=project2

每当我想要开始一个框架来处理项目1时,我会执行以下操作:

emacsclient -s project1 -c

大多数情况下,它都运行得很好,但我在使用emacs shell执行工具时遇到了问题,这些工具试图使用$EDITOR启动编辑器。当然,在这种情况下,我想要的是在我的当前emacs实例中打开一个新的缓冲区,这正是emacsclient的设计目的。因此,如果在项目1的emacs的shell缓冲区中我说:

export EDITOR='emacsclient -s project1'

那么在这个特定的shell中,一切都运行得很完美。

我的问题是,我如何自动设置EDITOR变量,使其指向当前shell正在运行的emacs实例?

1个回答

3
这里有一种方法可以实现:
(add-hook 'shell-mode-hook
      (lambda ()
        (comint-send-string 
         (get-buffer-process (current-buffer))
         (concat "export EDITOR='emacsclient -s " 
             (daemonp)
             " -c'\n"))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接