Emacs: раздражающее диалоговое окно Flymake - PullRequest
14 голосов
/ 03 апреля 2010

У меня есть следующие строки в моем ~/.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)

Когда я открываю файл C ++ с правильным Makefile в той же папке, я получаю компиляцию и отчеты об ошибках на лету (Flymake проверяет синтаксис и сообщает об ошибках и предупреждениях во время редактирования кода).

Makefile имеет цель check-syntax:

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

Проблема в том, что когда я открываю файл .cc, у которого нет соответствующего Makefile, я получаю раздражающее диалоговое окно, которое предупреждает меня об отключении flymake.

Поэтому, если я запускаю emacs *.cc в папке с 20 файлами C ++, я получаю 20 модальные диалоговые окна, говорящие что-то вроде Файл сборки не найден для [...]. Flymake будет выключен .

Есть ли какой-нибудь хук, который я могу использовать, чтобы отключить это предупреждение? Можете ли вы предоставить образец кода elisp и объяснение того, как вы нашли правильный хук?

Ответы [ 2 ]

14 голосов
/ 04 апреля 2010

Самый простой способ сделать это и при этом получить сообщения, это оставить для переменной настройки значение 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))
11 голосов
/ 03 апреля 2010

Существует переменная, которую можно настроить и которую я пропустил.

flymake-gui-warnings-enabled

Это отключит любое сообщение с графическим интерфейсом, но я буду в порядке, если никто не отправит лучший ответ.

...