正确的语法是:
#+PROPERTY: header-args :tangle "~/.config/emacs/init.el"
但是有一次,我使用了 header-aegs
而非 header-args
。
注意到了 e
替代了 r
。
我遇到了可怕的错误:tangled 0 code blocks
这个东西。
花费了很长时间才找到了错误。
我的问题是:
- 未来如何避免这种情况?
- 也许有某种语法检查器?例如
flycheck
或 Org Mode LSP 实现?
您可以尝试使用“Literate programming using LSP and org-mode(alpha)”,这是一个仍处于alpha测试阶段的项目,用于文学编程。
lsp-mode
提供了在org-mode
源代码块内运行语言服务器的实验性支持。
为了实现这一点,lsp-mode
通过获取源代码块头部信息(语言+:tangle
),将光标位置来回转换为LSP位置,从而使语言服务器认为Emacs已经打开了原始文件。
为了使其正常工作,文件也必须存在于磁盘上,因为服务器期望找到它们。
它还提到了 org-mode 集成(预览版)。
整合很基本,但可用 - 基本上你可以直接在org-mode
文档中运行语言智能来处理org-mode
源代码块。就像你注意到的那样,flycheck
没有Org-mode的检查器。
你也可以尝试@VonC的答案,但这可能不起作用,并且根据你的知识水平设置可能会很繁琐。
我的答案是:Yasnippet
如果你还没有使用它们,你应该使用它们,它们是一种更快、更安全地开发你想要的方式的好方法。这是一个“设置一次,完成”的解决方案,所以非常容易。
你也可以将这个解决方案与良好的自动补全工具结合起来使用,我会让你在这些方向上搜索,如果需要的话我会编辑东西。
e
和r
混淆了。 - Refael Sheinker
flycheck
没有适用于Org Mode的检查器。 - Refael Sheinkerheader-aegs
并不会导致语法错误:你仍然在定义一个属性,只是不是你想要的那个。org-lint
确实可以找到一些语法问题(肯定不是全部),但对于这种情况它无能为力。但它是可扩展的,所以向其中添加检查器应该相当容易。请参阅C-h f org-lint
和C-h f org-lint-add-checker
了解更多信息。 - NickDheader-aegs
并不会导致语法错误:你仍然在定义一个属性,只是不是你想要的那个。org-lint
确实可以找到一些语法问题(当然不是全部),但对于这种情况它无能为力。但它是可扩展的,所以向其中添加一个检查器应该相对容易。请参考C-h f org-lint
和C-h f org-lint-add-checker
获取更多信息。 - NickDheader-aegs
并不会导致语法错误:你仍然在定义一个属性,只是不是你想要的那个。org-lint
确实可以找到一些语法问题(当然不是所有问题),但对于这种情况它无能为力。但它是可扩展的,所以向它添加一个检查器应该相对容易。请使用C-h f org-lint
和C-h f org-lint-add-checker
获取更多信息。 - undefined