我想这个函数编译当前缓冲区(C文件)的内容,并表示,如果编译成功,的Emacs Lisp问题
(defun c-shell-compile()
(interactive)
(save-buffer)
(if (equal (shell-command (concat "gcc " (buffer-file-name)))
"(Shell command succeeded with no output)")
(shell-command "./a.out")
;;Else show the errors
))
(add-hook 'c-mode-hook
(lambda() (local-set-key (kbd "\C-c\C-c") 'c-shell-compile)))
输出(a.out的),但它似乎并没有被工作,如果编译成功,它只是说“(Shell命令成功,没有输出)”而不显示输出。
答案或方向非常感谢。
考虑使用'编译它也会创建一个特殊*编译*缓冲区来检查编译器输出/错误。 – 2010-06-24 12:17:03
这就是我最初尝试的,但使用shell命令似乎更灵活的定制。 – jimbo 2010-06-24 12:26:45
您可以使用挂钩定制大多数elisp函数:请参阅下面的代码。 即使挂钩不可用,您也可以使用defadvice。 – 2010-06-24 14:24:44