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