请教下在 emacs 里 调用 message() 调试的问题!

道友们好,我用的是spacemacs,上面是我的部分配置代码,但打开 c 文件时,只打印出了第二个语句,子函数里的第一个语句没有打印出来,请问是什么问题呢?谢谢大家!

不完全清楚什么状况,猜测你的 (add-hook 'c-mode-hook 'my-setup-...) 加载晚了,类似下面这个 message 第一次打开 Emacs Lisp 文件时也不会执行

(defun my-emacs-lisp-setup ()
  (message "loading my setup..."))

(add-hook 'emacs-lisp-mode-hook
          (lambda ()
            (add-hook 'emacs-lisp-mode-hook 'my-emacs-lisp-setup)))

谢谢! 现在问题是,我想在进入 C 模式 的最后,执行我自己的配置函数(my-setup-develop-environment),但现在打开 C 文件后,这个设置没起作用,所以感到很不解,请问有什么别的方法,在我打开 C 文件的最后,执行我自己的设置吗?

不了解 Spacemacs,不知道你的 lvway_layer/post-init-cc-mode 是被执行的,如果是像

(add-hook 'c-mode-hook 'lvway_layer/post-init-cc-mode)

这样的话,直接在这个函数里调用你的 my-setup-... 就行了,比如:

(defun lvway_layer/post-init-cc-mode ()
  (message "...")
  (my-setup-develop-environment))

如果不是的话,就要看具体情况了。

1 个赞

刚刚按照你的方法试了下,发现启动时报错:(void-function spacemacs | add-company-backends)。。。 但还是谢谢你,我去查查这是什么问题先!

把你完整的配置贴上来呗

为什么截图代码缩进那么乱?确定代码都写在函数里面吧?

打开 c 文件之后:

  1. M-x describe-variable RET major-mode 结果是不是 c++-modec-mode?是的话检查第 2 项。

  2. M-x describe-variable RET c++-mode-hookc-mode-hook 看看这两个 hook 里有没有你添加的方法。

哎,lisp 语法不了解,感觉无从下手,我还是先去看看lisp基本语法的东西再来配置吧,谢谢了!

谢谢,现在问题解决了,是函数重复定义的问题。至于缩进乱的问题,是因为我还不会 lisp,有空再看看lisp相关的书学学。另外我还想问下,company 的变量 company-minimum-prefix-length 在进入 c-mode 后,已经等于3了,但写代码的时候,发现打一个字母出来就开始补全,像下面的这样: aaaaaaaaaaaaaaaaaaaaaaaaa

请问这是什么问题呢!谢谢回答

设置company-minimum-prefix-length:

company-minimum-prefix-length is a variable defined in ‘company.el’.
Its value is 2
Original value was 3

Documentation:
The minimum prefix length for idle completion.

You can customize this variable.

P.S.:elisp自动indent