在设置我的Emacs工作区的脚本中,我使用命令
(shell (format "%s Interactive" name))
四次,启动四个具有不同名称和用途的交互式shell。问题是每个shell都在Emacs中的任意窗口中加载。我想控制shell和windows之间的映射。特别是,我有四个象限(由split-window-vertically
和split-window-horizontally
创建),我想定义每个象限中的shell。这可能吗?
答案 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的名称,例如来自缓冲区的名称。