基于每个文件(非文件类型)禁用自动填充模式

时间:2011-07-12 18:44:00

标签: emacs dot-emacs

我默认为所有LaTeX文件启用自动填充模式。

这通常很好,但有时一个乳胶文件主要包含表格,我想在编辑特定文件时禁用自动填充模式。

是否可以在.tex文件的顶部指定我希望它是例外? 或者,是否可以在.emacs中指定这些文件的路径/名称?

4 个答案:

答案 0 :(得分:3)

查看官方Emacs文档中的“文件中的局部变量”部分。有eval变量,允许评估任何代码。所以它看起来像(把它放到文件末尾,注释char应该是模式特定的):

# Local Variables:
# eval: (auto-fill-mode -1)
# End:

答案 1 :(得分:3)

我喜欢在文件中查找某些内容以确定是否自动填充的解决方案。

如果您想在顶部放置标识符,可以使用以下代码:

(defun my-auto-fill-disabling-hook ()
  "Check to see if we should disable autofill."
  (save-excursion
    (when (re-search-forward "Some Unique Identifier" 1000 t)
      (auto-fill-mode -1))))

(add-hook 'find-file-hooks 'my-auto-fill-disabling-hook)

显然将"Some Unique Identifier"更改为合理的内容 - 例如搜索表格本身。然后你就会得到你想要的东西,带表格的LaTeX文件不会自动填充。

注意:@Alex建议使用文件局部变量,但根据manual itself这是一个错误:

  

然而,通常以这种方式启用次模式是错误的。最   次要模式,如自动填充模式,代表个人用户   喜好。如果您想使用次要模式,最好设置   主模式与您的init文件挂钩,以打开该次要模式   你自己(参见Init File),而不是使用本地变量列表   把你的品味强加给每个人。

答案 2 :(得分:2)

此方法在技术上不会禁用填充模式,但与启用eval不同,它是安全的,并且可以实现所需的结果。将这样的行放在文件的第一行。只需指定正确的主要模式(可能是文本),并将填充列设置为适当大的值:

-*- mode: text; fill-column: 99999 -*-

如前所述,您可以编写一个钩子来决定是否应该启用自动填充,但我觉得这比必要工作更多。

答案 3 :(得分:0)

不确定添加了哪个Emacs版本,但您也可以基于每个文件“中性”auto-fill-function变量:

# Local Variables:
# auto-fill-function: (lambda nil nil)
# End: