【问题标题】:Specify output window for elisp command为 elisp 命令指定输出窗口
【发布时间】:2013-12-23 16:46:53
【问题描述】:

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

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

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

【问题讨论】:

  • 你能不能只循环浏览窗口并将每个窗口切换到不同的 shell 缓冲区?
  • 也许......这样做的 elisp 是什么?

标签: emacs elisp


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    (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 可以通过其他方式提取外壳的名称,例如来自缓冲区的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多