指定elisp命令的输出窗口

时间:2013-12-23 16:46:53

标签: emacs elisp

在设置我的Emacs工作区的脚本中,我使用命令

(shell (format "%s Interactive" name))

四次,启动四个具有不同名称和用途的交互式shell。问题是每个shell都在Emacs中的任意窗口中加载。我想控制shell和windows之间的映射。特别是,我有四个象限(由split-window-verticallysplit-window-horizontally创建),我想定义每个象限中的shell。这可能吗?

2 个答案:

答案 0 :(得分:0)

我建议您对display-buffer命令返回的缓冲区对象使用shell

或者,您可以直接使用set-window-buffer

答案 1 :(得分:0)

我认为一个好的方法可能是:

(defun my-shell-display-buffer (buffer alist)
  (let ((name (cdr (assq 'my-name alist))))
    ..display according to name...)))

(dolist (name '(...)
  (let ((display-buffer-overriding-action
         `(my-shell-display-buffer (my-name . ,name))))
    (shell (format "%s Interactive" name)))

另一种方法是

(push `(" Interactive\\'" my-shell-display-buffer)
      display-buffer-alist)

然后my-shell-display-buffer可以通过其他方式提取shell的名称,例如来自缓冲区的名称。