2010-12-06 47 views
7

是否有可能将“-yes”标志传递给emacs中的“重新编译”命令?emacs(重新编译-y)

请原谅我完全缺乏(e)lisp专有技术。我生病了要去外面的Emacs编译我乳胶的代码,所以我说下面的按键绑定到我的.emacs:

(global-set-key (kbd "<f12>") 'recompile); 

是否有可能自动地回答“是”可能出现的如下提示: “编译过程正在运行;杀死它?(是或否)。”

另外,是否可以使窗口打开并显示输出以自动滚动到底部。有趣的东西通常在那里。也许有可能在重新编译后链接下面的命令:“C-x o,缓冲区结束”。

谢谢!

+1

或者,也许你可以只通过` - halt-on-error“复制到`pdflatex`(或类似的)。 – cYrus 2015-04-11 12:03:39

回答

7

下面是一些代码来解决你的第一个问题(中断当前编译):

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors (kill-compilation)) 
    (recompile)) 

对于你的第二个问题(滚动编译输出),只需定制用户设置compilation-scroll-output

+0

它的工作,谢谢。 – qonf 2010-12-06 11:49:52

2

我不知何故需要将kill-compilation放入Emacs 23.2的忽略错误中,以便在没有进程运行时使其工作。否则,效果很好。

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors 
    (kill-compilation)) 
    (recompile) 
) 
2

每当我尝试使用kill-compilation乳胶/ pdflatex它没有工作。我认为这是因为乳胶不响应SIGINT。

取而代之,我正在使用以下hack,它首先设置compilation缓冲区中的process-kill-without-query位,然后关闭它(这会杀死正在运行的进程)。

(defun interrupt-and-recompile() 
    "Interrupt old compilation, if any, and recompile." 
    (interactive) 
    (ignore-errors 
    (process-kill-without-query 
     (get-buffer-process 
     (get-buffer "*compilation*")))) 
    (ignore-errors 
    (kill-buffer "*compilation*")) 
    (recompile) 
)