我想设置Emacs,这样当我在菜单中选择“编译..”时,Emacs会在命令行上执行“make filename”。我想是这样的:编译时在Emacs中查找缓冲区文件名
(setq compile-command (concat "make " (file-name-sans-extension
buffer-file-name)))
,但它不工作 - 它看起来像Emacs的是寻找一个文件名称为*scratch*
缓冲区,没有之一。有谁知道如何解决这一问题?
谢谢。
更新:如Cheeso建议的,挂钩修复了问题。这里是一个适用于我的版本:
(defun cur-file()
(file-name-sans-extension
(file-name-nondirectory (buffer-file-name (current-buffer)))))
(add-hook 'c++-mode-hook
(lambda()
(set (make-local-variable 'compile-command)
(concat "make " (cur-file)))))
n.b.您应该接受Cheeso的答案,或者发布您自己的解决方案作为答案并接受。 – phils 2012-04-10 05:41:03