неправильная конфигурация emacs при попытке настроить ggtags и flycheck с прелюдией

Я пытаюсь настроить установку для 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 второстепенных режима работать правильно настроенным? Для меня это кажется правильным способом, но, очевидно, я что-то упускаю.

0

Решение

Ты используешь 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"))
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]