为elisp命令指定输出窗口

3
在设置Emacs工作区的脚本中,我使用以下命令:
(shell (format "%s Interactive" name))

我想启动四个交互式shell,每个shell有不同的名称和用途,但每个shell都会在Emacs中任意打开一个窗口。我想要控制shell和窗口之间的映射关系。特别地,我有四个象限(由split-window-verticallysplit-window-horizontally创建),我想定义哪些shell放在每个象限中。这是否可行?


你能否循环浏览窗口并将每个切换到不同的shell缓冲区? - tripleee
也许...做这个的elisp是什么? - jhourback
2个回答

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的名称。


0

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