1

在处理 c 文件时,我创建了一个钩子函数来激活讽刺模式。但是,当我打开一个 php 文件时,这些钩子也会被执行。

这是代码:

(defun my-company-irony ()
  (irony-mode)
  (unless (memq 'company-irony company-backends)
    (setq-local company-backends (cons 'company-irony company-backends))))

(add-hook 'c-mode-hook #'my-company-irony)

有人知道如何停止在 php 文件上执行这个钩子吗?

4

1 回答 1

1

似乎php-mode继承自c-mode,我认为这意味着它将运行c-mode-hook。如果您查看 cc-mode.el,其他类似 C 的模式继承 fromprog-mode而不是直接 from c-mode,这可能是正确的事情。您可能应该向php-mode.

同时要修复它,只需将您的代码包装在一个测试中c-mode

(defun my-company-irony ()
  (when (eq major-mode 'c-mode)
    (irony-mode)
    (unless (memq 'company-irony company-backends)
      (setq-local company-backends (cons 'company-irony company-backends)))))
于 2017-03-23T20:01:27.333 回答