2011-01-05 28 views
4

我试图将我的大部分编辑和shell活动转移到emacs中,这样我就可以轻松地从不同的计算机继续工作。我的不同项目也有不同的emacs实例。例如,我开始了:如何使emacsclient找到它执行的emacs守护进程

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

然后,每当我想开始一个框架上PROJECT1工作,我做的:

emacsclient -s project1 -c 

主要是它的伟大工程,但我有从执行工具的麻烦我试图用$ EDITOR启动编辑器的emacs shell。当然,在这种情况下我想要的是在我当前的emacs实例中打开一个新的缓冲区,这正是emacsclient的设计目的。所以,如果在PROJECT1的emacs的外壳缓冲区我说:

export EDITOR='emacsclient -s project1' 

然后特定壳一切完美。

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

回答

3

下面是做到这一点的一种方法:

 
(add-hook 'shell-mode-hook 
     (lambda() 
     (comint-send-string 
     (get-buffer-process (current-buffer)) 
     (concat "export EDITOR='emacsclient -s " 
      (daemonp) 
      " -c'\n"))))