emacs中的交互式编译模式? (如果编译器提出问题怎么办)

时间:2010-07-10 01:14:37

标签: emacs

我正在寻找常规编译模式的黑客,或者建议如何创建新模式。 我想要实现的是“编译”我的代码 - 但是编译器有时会在终端上询问某些问题(是/否等等)。 Afaik,常规编译模式不能指导我的键盘输入并用它来提供子进程。 这可能吗?

由于

4 个答案:

答案 0 :(得分:22)

C-u M-x compile RET就是你所需要的。

事实上,这是有记录的:输入C-h f compile RET显示

Additionally, with universal prefix arg, compilation buffer will be in comint mode, i.e. interactive.

答案 1 :(得分:2)

如果您事先知道所有答案,那么您可以轻而易举地完成以下任务:

(setq compile-command "(echo yes; echo no; echo yes) | (old compile command)")

答案 2 :(得分:1)

我已经从使用编译模式切换到使用async shell命令。这是lisp:

(defun run-it () "Run it on the current file." (interactive) (save-buffer) (shell-command (format "my_command %s &" (shell-quote-argument (buffer-name))))) (global-set-key "\C-ct" 'run-it)

首先保存缓冲区。 &使它实际上是交互式的,因此我可以在缓冲区中输入文本,命令将获得该输入。另一个好处是它可以动态地为命令输出着色,我的编译缓冲区没有这样做。

答案 3 :(得分:0)

似乎实现我想要的唯一方法是使用comint包。 我将覆盖常规编译模式,以确定(在文件类型上)编译器是否会提出任何问题 - 如果不是,请使用常规编译,否则使用我的自定义comint集成缓冲区。