我想設置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