如何在emacs中禁用Verilog模式?

5
我想在ProofGeneral中使用coq,但内置的Verilog模式遮盖了*.v文件类型的识别。我能否禁用它,并让ProofGeneral将它们重新映射到其coq模式?
4个回答

5
你需要在你的.emacs文件或其他文件中覆盖auto-mode-alist绑定。这篇SO帖子在VHDL方面做了类似的事情: 如何在emacs中关闭vhdl-mode?。此外,我谷歌搜索"auto-mode-alist remove"并找到这个链接。复制/粘贴重要部分:
;; Remove all annoying modes from auto mode lists

(defun replace-alist-mode (alist oldmode newmode)
  (dolist (aitem alist)
    (if (eq (cdr aitem) oldmode)
    (setcdr aitem newmode))))

;; not sure what mode you want here. You could default to 'fundamental-mode
(replace-alist-mode auto-mode-alist 'verilog-mode 'proof-general-mode)

刚刚也发现了这个,但我会接受你的答案,因为它更详细并且有参考资料。 - Peteris

2

我不熟悉ProofGeneral,但如果我正确理解了你的问题,你需要修改auto-mode-alist变量,以将具有.v扩展名的文件与正确的主要文件相关联。因此,您需要在.emacs文件中添加类似于以下内容的代码:

(add-to-list 'auto-mode-alist '("\\.v$" . proof-general-coq-mode))

1

以下代码行有效:

(setq auto-mode-alist (remove (rassoc 'verilog-mode auto-mode-alist) auto-mode-alist))

1

我猜这可能是一个XY问题。

今天我也遇到了同样的问题,首先,我尝试了和你一样的方法,在我的~/.spacemacs文件中添加了以下内容:

(setq auto-mode-alist (remove (rassoc 'verilog-mode auto-mode-alist) auto-mode-alist))

然后模式变得基础,我意识到真正的原因是 spacemacs 的 coq layer 没有自动安装,需要花费很多精力来安装它及其依赖项。以下是我在成功在 Emacs 上运行 Coq 后总结的安装步骤:https://gist.github.com/luochen1990/68e5e38496b79790e70d82814bdfc69a。希望这对你有帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接