【问题标题】:wrong emacs configuration when trying to setup ggtags and flycheck with prelude尝试使用前奏设置 ggtags 和 flycheck 时错误的 emacs 配置
【发布时间】:2013-10-17 17:13:55
【问题描述】:

我正在尝试微调包含 emacs prelude 的 emacs 设置。 我想将cppcheck 作为flycheck 的默认检查器,并在默认情况下为GNU Global 激活ggtags。我主要编写 C++ 代码。它以前对 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文件的时候加载,没有错误。

谁能帮助我正确配置这两种次要模式?对我来说,这似乎是正确的做法,但显然我错过了一些东西。

【问题讨论】:

  • 仅供参考:flycheck-select-checker 需要一个符号作为参数,而不是字符串,即(flycheck-select-checker 'c/c++-cppcheck)
  • 我很久以前就更正了。还是谢谢你。

标签: c++ emacs elisp flycheck


【解决方案1】:

你错误地使用了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 派生的,我猜你想检查current 主模式是否从c++-mode 派生:

(when (derived-mode-p major-mode 'c++-mode)
  (ggtags-mode 1)
  (flycheck-select-checker "c/c++-cppcheck"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2013-01-25
    相关资源
    最近更新 更多