Я пытаюсь настроить установку для Emacs с Emacs Prelude включен.
Я хочу иметь в качестве проверки по умолчанию cppcheck
за flycheck и активировать ggtags по умолчанию для GNU Global. Я кодирую в основном с ++. Раньше работал для ggtags-mode
переменная, но теперь, кажется, больше не работает.
(load "/home/user/.emacs.d/init.el")(defun my-c-mode-common-hook ()
"Hook for all c derived modes."(c-add-style "my-style"'("stroustrup"(c-offsets-alist
(innamespace . [0])
(inline-open . 0)
(inher-cont . c-lineup-multi-inher)
(arglist-cont-nonempty . +)
(template-args-cont . +))))
(setq c-default-style "my-style")
(when (derived-mode-p 'c-mode 'c++-mode)
(ggtags-mode 1)
(flycheck-select-checker "c/c++-cppcheck"))
)(add-hook 'c-mode-common-hook
(my-c-mode-common-hook))
У меня есть предупреждение, которое говорит the following functions are not known to be defined: ggtags-mode, flycheck-select-checker
, Но при загрузке файла .emacs ошибок нет.
Может кто-нибудь помочь мне с правильным способом заставить эти 2 второстепенных режима работать правильно настроенным? Для меня это кажется правильным способом, но, очевидно, я что-то упускаю.
Ты используешь add-hook
неправильно: требуется функция в качестве второго аргумента, но вы вызываете свою функцию там и так передать значение (flycheck-select-checker ..)
как функция. Скорее всего, вы увидите ошибку в режиме C (C / Java / C ++ / AWK / …).
Что вам нужно сделать, это (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
,
Также этот код никогда не будет выполнен:
(when (derived-mode-p 'c-mode 'c++-mode)
(ggtags-mode 1)
(flycheck-select-checker "c/c++-cppcheck"))
так как 'c-mode
не является производным от 'c++-mode
Я думаю, вы хотите проверить, если ток основной режим является производным от c++-mode
:
(when (derived-mode-p major-mode 'c++-mode)
(ggtags-mode 1)
(flycheck-select-checker "c/c++-cppcheck"))
Других решений пока нет …