2010-04-03 29 views
14

tôi có các dòng sau trong tôi ~/.emacs.d/init.elEmacs: gây phiền nhiễu Flymake hộp thoại

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

Khi tôi mở một C++ tập tin mà có một Makefile thích hợp trong cùng một thư mục, tôi nhận được on-the-fly biên soạn và lỗi báo cáo (Flymake sẽ kiểm tra cú pháp và báo cáo lỗi và cảnh báo trong khi chỉnh sửa mã).

Các Makefile có một mục tiêu check-syntax:

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

Vấn đề là khi tôi mở một file .cc mà không có Makefile tương ứng tôi nhận được một hộp thoại cảnh báo gây phiền nhiễu mà tôi về flymake bị vô hiệu hoá.

Vì vậy, nếu tôi khởi động emacs *.cc trong một thư mục với các file 20 C++ tôi nhận được 20 modal hộp thoại nói cái gì đó như Không buildfile tìm thấy cho [...]. Flymake sẽ bị tắt.

Có móc nào tôi có thể sử dụng để tắt cảnh báo đó không? Bạn có thể cung cấp mã elisp mẫu và giải thích về cách bạn tìm thấy móc phù hợp không?

Trả lời

14

Cách dễ nhất để thực hiện việc này và vẫn nhận được thư, là để biến tùy chỉnh được đặt thành true và xác định lại hàm cảnh báo 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)) 
+3

Tôi sẽ ghi đè hàm bằng 'defadvice' thay vì' defun', vì trước đây rõ ràng tuyên bố ý định của bạn để ghi đè hàm, và nó cũng hoạt động ngay cả khi flymake được nạp lại sau. –

+0

vì nó sẽ không chính xác tương đương (ví dụ 's/defun/defadvice /' không phải là sufficent), bạn có thể đăng nó như là một câu trả lời @RyanThompson – ocodo

11

Có một biến có thể được tùy chỉnh và tôi bỏ qua.

flymake-gui-warnings-enabled

này sẽ vô hiệu hóa bất kỳ thông điệp GUI, nhưng tôi sẽ ổn với nó nếu không có ai sẽ đăng một câu trả lời tốt hơn.

+2

có vẻ như điều này sẽ vô hiệu hóa tất cả cảnh báo/thông báo lỗi từ flymake. Cách tốt nhất là để hiển thị các tin nhắn trong minibuffer. – RNA

Các vấn đề liên quan