在Emacs组织模式下设置本地文件变量

Bri*_*n Z 14 emacs org-mode

在特定的组织模式文件中,我不希望继承标记.我认为-*- org-use-tag-inheritance: nil第一线就可以做到这一点,但这似乎并不奏效.如果没有手动执行setq语句,我该如何实现?

phi*_*ils 16

-*-在标题评论中遗漏了一个尾随.

试试这个:

# -*- org-use-tag-inheritance: nil; -*-
Run Code Online (Sandbox Code Playgroud)

nb很容易检查局部变量是否实际按照您的预期设置 - 只需使用C-h v VAR有问题的VAR,Emacs会告诉您它是否具有缓冲区本地值.

  • 我建议使用内置函数(“Mx add-file-local-variable-prop-line”)自动添加定义缓冲区局部变量的行。易于使用并且对我有用。 (4认同)
  • 另外,请注意,根据[此文档页面](https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html),用“-*-”定义的变量需要在文件的**第一行**中指定。如果将缓冲区局部变量的定义移到第二行,它可能不起作用。 (2认同)

Die*_*elm 8

我更喜欢在文件末端设置in-buffer lisp变量,如下所示:

* Local variables
# local variables:
# org-attach-directory: "./data"
# org-id-method: uuid
# end:
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`*COMMENT Local variables`来确保不会导出此标题. (6认同)

Tob*_*ias 6

另一种选择是在 orgmode 文件末尾Local Variables带有:noexport:标记的部分:

* Local Variables :noexport:
Local Variables:
org-use-tag-inheritance: nil
End:
Run Code Online (Sandbox Code Playgroud)

这种方法的优点是局部变量不是 orgmode 文档的最后一个常规部分的一部分,而是通过一个特殊部分与文档的其余部分在逻辑上分开。