这是用例:我在技术博客上阅读了一篇关于 C++ 的文章(多继承失败,多线程失败等:)。通常它们带有一些代码。它几乎总是一个文件,我几乎总是想运行它并玩弄它。
我想用 Emacs 来做这件事,而且我想用最少的(或相当少的)击键来做。
所以假设我已经multiple_inheritance.cc
在它自己的文件夹中创建了一个文件并粘贴了代码。我怎样才能真正快速地获得可执行文件?
这就是我现在正在做的事情(希望有人会改进它。)
(defun cpp-generate-makefile ()
(interactive)
(let* ((n-buffer (buffer-file-name))
(n-file (file-name-nondirectory n-buffer))
(n-target (file-name-sans-extension n-file))
(n-makefile (concat (file-name-directory n-buffer) "Makefile")))
(if (file-exists-p n-makefile)
(when (called-interactively-p 'any)
(message "Makefile already exists"))
(with-current-buffer (find-file-noselect n-makefile)
(insert
(concat n-target ": " n-file
"\n\tg++ -g -O2 -std=c++0x -o $@ $^\n\n"
"clean: \n\trm -f " n-target "\n"))
(save-buffer)))))
(defun cpp-run ()
(interactive)
(save-buffer)
(cpp-generate-makefile)
(compile "make"))
(add-hook 'c++-mode-hook
(lambda()
;; ...
(define-key c++-mode-map [f5] 'cpp-run)))
以下是目前让我慢下来的几件事:
compile
询问我是否要保存任何与 C++ 完全无关的打开文件。- 我想在
*compilation*
缓冲区中有一个点,以防出现错误。我查看了compile.el
已compilation-num-errors-found
定义的 ,但该变量未在该文件中的任何位置使用。 - 另一方面,如果没有错误(我只需要一个谓词),为什么不启动
term
并运行程序呢?