我的~/.emacs.d/init.el
(custom-set-variables
'(flymake-allowed-file-name-masks
(quote
(
("\\.cc\\'" flymake-simple-make-init)
("\\.cpp\\'" flymake-simple-make-init)))))
(add-hook 'find-file-hook 'flymake-find-file-hook)
当我在同一个文件夹中打开一个具有正确Makefile的C ++文件时,我会得到即时编译和错误报告(Flymake将检查语法并在代码编辑期间报告错误和警告)。
Makefile有一个check-syntax
目标:
.PHONY: check-syntax
check-syntax:
$(CXX) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES)
问题是,当我打开一个没有相应Makefile的.cc文件时,我得到一个恼人的对话框,警告我关于flymake被禁用。
因此,如果我在包含20个C ++文件的文件夹中启动emacs *.cc
,我会得到20个模态对话框,其中包含找不到[...]的构建文件。 Flymake将被关闭。
我可以使用一些钩子来禁用该警告吗?你能提供样本elisp代码和解释你如何找到合适的钩子吗?
答案 0 :(得分:14)
最简单的方法是将自定义变量设置为true,然后重新定义flymake-display-warning函数。
;; Overwrite flymake-display-warning so that no annoying dialog box is
;; used.
;; This version uses lwarn instead of message-box in the original version.
;; lwarn will open another window, and display the warning in there.
(defun flymake-display-warning (warning)
"Display a warning to the user, using lwarn"
(lwarn 'flymake :warning warning))
;; Using lwarn might be kind of annoying on its own, popping up windows and
;; what not. If you prefer to recieve the warnings in the mini-buffer, use:
(defun flymake-display-warning (warning)
"Display a warning to the user, using lwarn"
(message warning))
答案 1 :(得分:11)
有一个可以定制的变量,我忽略了。
flymake-gui-warnings-enabled
这将禁用任何GUI消息,但如果没有人会发布更好的答案,我会很好。