2015-06-20 11 views
17

Mam poważne problemy z konfiguracją flycheck dla C++ 11. Obecnie flycheck sygnalizuje takie rzeczy, jak std::to_string(). Kontroler, którego używam, to po prostu g ++. Co mogę dodać w pliku .emacs, że domyślnie flycheck domyślnie przyjmie C++ 11?Konfigurowanie Flycheck do pracy z C++ 11

Odpowiedz

37

Flycheck udostępnia do tego celu opcję flycheck-gcc-language-standard. Nie powinno się ustawić go na całym świecie, dlatego że złamie sprawdzanie plików C, ale można ją ustawić z c++-mode-hook z następującego kodu w pliku init:

(add-hook 'c++-mode-hook (lambda() (setq flycheck-gcc-language-standard "c++11"))) 

Chciałbym jednak odradzam to. Zamiast tego użyj Directory Variables, aby skonfigurować standard językowy dla każdego projektu.

Otwórz katalog główny projektu w Dired z C-x d, a następnie wpisz M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11". Spowoduje to utworzenie pliku .dir-locals.el w katalogu głównym projektu. Emacs odczytuje ten plik za każdym razem, gdy odwiedzasz plik z tego katalogu lub dowolnego podkatalogu i ustawia zmienne zgodnie z regułami w tym pliku. W szczególności, Emacs ustawi teraz standard językowy dla sprawdzania składni Flycheck na C++ 11 dla wszystkich plików C++ w twoim projekcie.

+0

Próbowałem tego ze zmiennymi katalogowymi iw buforze C++ zmienna wyświetla się jako * C++ 11 *. Ale wciąż mam ostrzeżenie, ponieważ * specyfikator typu auto jest rozszerzeniem C++ 11 *. –

+0

@Enzo Chi, działa dla mnie, prawdopodobnie musisz usunąć bufor pliku i ponownie otworzyć plik. –

+4

Na wypadek, gdyby nie działało to dla niektórych osób: wygląda na to, że test flecheck użyje klang przed gcc, jeśli jest zainstalowany. W takim przypadku zmienną jest flycheck-clang-language-standard. – dmg

4

Bardzo dobre odpowiedzi już. Chcę tylko dodać, że jeśli zamiast tego używasz clang, zmienną wymagającą modyfikacji jest flycheck-clang-language-standard.

+1

lub dodaj jedną linię "-std = C++ 11" w pliku .clang_complete znajdującym się w katalogu głównym projektu. – elinx