emacs - Doom Emacs 中 Agda-mode 2 的语法高亮显示
问题描述
我需要帮助让 agda 模式在我的 emacs 系统上工作。本质上,语法高亮只发生在我保存之后,而不是像其他标准模式那样实时。我做了基础教程。我在我的系统上运行 Manjaro,所以我使用 pacman 安装了 agda (2.6.0.1) 和 agda-stdlib (1.2-1)。在那之后,我做了
agda-mode setup
这样做是添加
(load-file (let ((coding-system-for-read 'utf-8))
(shell-command-to-string "agda-mode locate")))
到我的 .emacs.d 文件中的 .init.el 。所以那时,我认为一切都很好。但是,当我启动 emacs 并尝试使用在互联网上找到的一些文件来学习 agda 时(https://oxij.org/note/BrutalDepTypes.lagda)。但是,当我保存文件时似乎只有语法突出显示,并且任何新文本在保存之前都不会着色。我试图通过从 .emacs.d 中的 .init.el 中删除代码来解决此问题,而是将其放入 .doom.d 中的 .init.el 中。但我仍然得到相同的结果。我也这样做sudo agda-mode compile
了,这给了我以下输出:
Loading quail/latin-ltx...
我使用 sudo 因为否则我会得到这个
>>Error occurred processing /usr/share/agda/emacs-mode/agda2-abbrevs.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/agda2-abbrevs.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/agda2-abbrevs.elc
>>Error occurred processing /usr/share/agda/emacs-mode/annotation.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/annotation.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/annotation.elc
>>Error occurred processing /usr/share/agda/emacs-mode/agda2-queue.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/agda2-queue.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/agda2-queue.elc
>>Error occurred processing /usr/share/agda/emacs-mode/eri.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/eri.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/eri.elc
>>Error occurred processing /usr/share/agda/emacs-mode/agda2.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/agda2.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/agda2.elc
>>Error occurred processing /usr/share/agda/emacs-mode/agda-input.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/agda-input.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/agda-input.elc
>>Error occurred processing /usr/share/agda/emacs-mode/agda2-highlight.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/agda2-highlight.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/agda2-highlight.elc
Loading quail/latin-ltx...
>>Error occurred processing /usr/share/agda/emacs-mode/agda2-mode.el: File error (("Opening output file" "Cannot overwrite file" "/usr/share/agda/emacs-mode/agda2-mode.elc"))
Removing old name: Permission denied, /usr/share/agda/emacs-mode/agda2-mode.elc
Unable to compile the following Emacs Lisp files:
/usr/share/agda/emacs-mode/agda2-abbrevs.el
/usr/share/agda/emacs-mode/annotation.el
/usr/share/agda/emacs-mode/agda2-queue.el
/usr/share/agda/emacs-mode/eri.el
/usr/share/agda/emacs-mode/agda2.el
/usr/share/agda/emacs-mode/agda-input.el
/usr/share/agda/emacs-mode/agda2-highlight.el
/usr/share/agda/emacs-mode/agda2-mode.el
但这也没有奏效。
我也尝试了一个不同的文件:
{- My Agda Tutorial-}
Module Tut where
open import Data.List
rev : {A : Set} -> List A -> List A
这并没有太大变化,但是当我尝试对文件进行类型检查时也给了我这个错误
/usr/share/agda/lib/_build: createDirectory: permission denied
(Permission denied)
关于如何解决这个问题的任何想法?我真的很想使用我相同的厄运配置。
解决方案
语法高亮仅在我保存后发生
这是有意的。缓冲区已成功键入后发生着色。您正在尝试解决一个可能不存在的问题。
由于类型检查缓冲区是 Agda 开发中必不可少的部分,因此您在编程时应该不难习惯经常这样做。
为了手动调用类型检查器,快捷方式是CTRL-C CTRL-L
.
推荐阅读
- xml - 基于其他属性在 bash 脚本中提取 XML 属性
- django - Django - 查询m2m字段时如何保留添加顺序?
- c# - 统一二维。查找沿轴移动的对象的坐标
- python - 从列表列表中删除停用词
- python - 如何使用nodejs验证密码?
- php - Laravel 将翻译文件的内容作为数组获取
- python - 为什么我的 plt.plot() 在绘制弹丸运动时不起作用?
- amazon-web-services - AWS - Cognito 联合身份
- python-3.x - Tensorboard(超级初学者) - 需要简单的历元损失图,InvalidArgumentError 上的错误:int64 的 attr 'T' 的值不在列表中
- c++ - 为什么析构函数调用比构造函数调用多