14

私の中には次の行があります~/.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が無効になっていることを警告する迷惑なダイアログボックスが表示されることです。

したがって、emacs *.cc20個のC ++ファイルを含むフォルダーで起動すると、[...]のビルドファイルが見つかりませんのような20個のモーダルダイアログボックスが表示されます。Flymakeはオフになります

その警告を無効にするために使用できるフックはありますか?サンプルのelispコードと、適切なフックを見つけた方法についての説明を提供できますか?

4

2 に答える 2

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))
于 2010-04-04T13:12:16.503 に答える
11

カスタマイズ可能で見落としている変数があります。

flymake-gui-warnings-enabled

これにより、GUI メッセージが無効になりますが、誰もより良い回答を投稿しない場合は問題ありません。

于 2010-04-03T19:58:21.660 に答える