【问题标题】:How to ignore a local variables list in text?如何忽略文本中的局部变量列表?
【发布时间】:2013-08-07 09:22:08
【问题描述】:

我正在为新的 emacs 模式编写自述文件(org-mode),在安装说明中,我们介绍了如何基于每个文件启用该模式:

or at the end of your file:

#+BEGIN_SRC emacs-lisp
  ! Local Variables:
  ! mode: f90-namelist
  ! End:
#+END_SRC

问题在于,这会将 README.org 文件放入我们的新 f90-namelist-mode 而不是 org-mode。用# mode: org 将另一个局部变量列表放在文件末尾是行不通的,尽管放

# -*- enable-local-variables: query -*-

让我接受或拒绝 所有 局部变量,然后 emacs 从 .org 文件扩展名中确定主要模式。这样就排除了我可能想要包含的任何其他局部变量。

有没有更优雅的方式在文本中包含文字局部变量列表?

【问题讨论】:

标签: emacs emacs23


【解决方案1】:

引用Emacs manual:

局部变量列表的开头不应超过 3000 文件末尾的字符,并且必须在最后一页,如果 文件被分成几页。

因此,为了确保您的文本局部变量将被忽略,请在局部变量的实际列表之前或文件末尾添加 page break (C-q C-l) t 有局部变量:

or at the end of your file:

#+BEGIN_SRC emacs-lisp
  ! Local Variables:
  ! mode: f90-namelist
  ! End:
#+END_SRC
^L

这将适用于所有局部变量,而不仅仅是主模式。

如果您不想导出分页符,只需comment it,正如@lunaryorn 所建议的那样。

【讨论】:

  • 您可能希望将分页符放入评论中以防止其被导出。请参阅组织手册中的Comment Lines
  • @lunaryorn 感谢您的建议,但如果您不导出分页符,您在导出的文件中也会遇到同样的问题,因此评论它可能不是一个好主意。
  • 另一方面,一些出口商可能会因分页符而窒息。而且您通常不想编辑导出的文件本身。毕竟是导出的:)不过当然要视具体情况而定。
【解决方案2】:

iostream 标头如下所示:

// Standard iostream objects -*- C++ -*-
...

这不仅是在 Emacs 中指定模式的标准方式, 但在整个 Linux 上,对于所有选择解析它的编辑器。 我建议你走这条路。

此外,在我看来,启用局部变量是一种错误, 因为它可能导致 Microsoft Word 与 VBA 的混乱:病毒无处不在。 源代码或文档不应自行执行。

【讨论】:

  • 这不起作用,因为 emacs 会在 -*- 行之后解析局部变量列表,因此包含 -*- mode: org -*- 不起作用。
  • 我还应该指出,我们确实也将其作为指定模式的一种方式,但问题是 Emacs 解析应该是文字文本。
猜你喜欢
  • 2019-11-14
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2018-07-24
相关资源
最近更新 更多