Question

I have the following lines in my ~/.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)

When I open a C++ file that has a proper Makefile in the same folder, I get on-the-fly compilation and error reporting (Flymake will check the syntax and report errors and warnings during code editing).

The Makefile has a check-syntax target:

.PHONY: check-syntax
check-syntax:
 $(CXX) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES)

The problem is that when I open a .cc file that has no corresponding Makefile I get an annoying dialog box that warns me about flymake being disabled.

So if I launch emacs *.cc in a folder with 20 C++ files I get 20 modal dialog boxes saying something like No buildfile found for [...]. Flymake will be switched off.

Is there some hook I can use to disable that warning? Can you provide sample elisp code and explanation on how you found the proper hook?

Was it helpful?

Solution

Easiest way to do this, and still recieve the messages, is to leave the customization variable set to true, and redefine the flymake-display-warning function.

;; 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))

OTHER TIPS

There is a variable that can be customized and that I overlooked.

flymake-gui-warnings-enabled

This will disable any GUI message, but I'll be fine with it if no one will post a better answer.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top