4

我正在阅读kill-emacs-hookemacs 手册中的变量。它说:

kill-emacs-hook是在“C 源代码”中定义的变量。
它的值为
(org-babel-remove-temporary-directory migemo-pattern-alist-save)

当用作文件局部变量时,此变量具有潜在风险。

文档:调用
` ' 时要运行的挂钩kill-emacs
...缩写...

我不明白这句话:“一个文件局部变量”。这个“文件局部变量”是什么意思?

4

2 回答 2

4

Emacs 具有在文件内容中指定缓冲区变量的功能。http://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables

这经常用于指定文件的模式-*- python -*-,例如首选的缩进样式或标签宽度;但如果您允许,它可能会让文件的作者完全控制您的 Emacs。但是,对于被认为不安全的变量,默认行为是在允许设置生效之前要求用户确认。有关进一步讨论,请参阅手册。

于 2012-08-29T14:44:47.073 回答
2

默认情况下,当您设置一个具有setq全局值的变量时。这意味着所有缓冲区都将看到新值。

但是,某些变量(称为缓冲区局部变量)的工作方式不同。设置缓冲区局部变量时,其值仅针对setq发生事件的缓冲区更改。其他缓冲区看不到更改。

这些缓冲区局部变量可以从缓冲区当前访问的文件的内容中获取它们的值。如果文件包含格式正确的字符串(请参阅@tripleee 的答案),则缓冲区局部变量将在文件打开时使用该值初始化。

附带说明一下,目录局部变量也存在,它们为访问目录中文件的每个缓冲区设置一个缓冲区局部变量。

于 2012-08-29T14:48:06.327 回答