在Emacs上,通过Emacs-Lisp获取发送到缓冲区的命令的输出

时间:2011-07-01 17:47:04

标签: emacs

我想在ELisp中编写一个小脚本:

  1. 将命令发送到给定的缓冲区
  2. 获取其输出
  3. 解析它
  4. 将其发送到另一个缓冲区
  5. 我在第2点挣扎:我无法得到命令的输出。例如,如果我打开了shell缓冲区,我可以使用

    (process-send-string "shell" "help\n")
    

    向我的shell缓冲区发送“帮助”。然后它将显示可用命令的列表。但是如何让这个列表在其他地方使用呢?

    谢谢,

    S4M

3 个答案:

答案 0 :(得分:1)

(buffer-string)返回当前缓冲区的内容,因此(with-current-buffer <buf> (buffer-string))将返回<buf>的内容。

答案 1 :(得分:1)

我不知道确切的emacs命令是我的头脑,但一个选项是执行以下操作:

  • 在命令行正下方的shell缓冲区中设置标记
  • 执行命令。
  • 将该点移动到文件的末尾并终止其与标记之间的文本。
  • 移动到目标缓冲区并将文本拖入那里。

答案 2 :(得分:1)

您是否考虑过使用shell-commandshell-command-to-string功能?

不要像你问的那样“向缓冲区发送命令”,但它们都允许通过仅为此目的启动的进程运行命令,并将输出转储到目标缓冲区或收集它变成一个字符串。