Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emacs: annoying Flymake dialog box

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?

like image 431
baol Avatar asked Apr 03 '10 14:04

baol


2 Answers

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))
like image 118
arvidj Avatar answered Sep 20 '22 19:09

arvidj


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.

like image 20
baol Avatar answered Sep 20 '22 19:09

baol