Emacs 这是什么;文件局部变量";什么意思?

Emacs 这是什么;文件局部变量";什么意思?,emacs,elisp,Emacs,Elisp,我正在阅读emacs手册中的kill emacs hook变量。 它说: kill-emacs-hook是在“C源代码”中定义的变量。 它的价值是 (org babel remove temporary directory migemo pattern alist save) 当用作文件局部变量时,此变量可能存在风险 文档: 调用“kill emacs”时要运行的钩子。 …缩写 我不明白这句话:“一个文件局部变量”。“文件局部变量”是什么意思?Emacs有一个工具,可以在文件内容中指定缓冲区变量

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

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

当用作文件局部变量时,此变量可能存在风险

文档:
调用“
kill emacs
”时要运行的钩子。
…缩写


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

Emacs有一个工具,可以在文件内容中指定缓冲区变量


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

由defaul编写,当您使用
setq
设置变量时,该值为全局值。这意味着所有缓冲区都将看到新值

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

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

另外,还存在目录局部变量,它为访问目录中文件的每个缓冲区设置一个缓冲区局部变量