使用Emacs和Sweave的缓冲区局部变量

时间:2010-01-19 16:53:27

标签: emacs r sweave

我正在使用带有ESS 5.4的Emacs 23.1来编辑Sweave文件。我想关闭缓冲区中的默认AUCTeX缩进行为(以避免对逐条列表中包含的代码块造成烦扰),因此在文件的顶部我有% -*- LaTeX-indent-level: 0; LaTeX-item-indent: 0; -*-。当我打开缓冲区并运行C-h v LaTeX-indent-level时,我得到了我想要的东西:

LaTeX-indent-level is a variable defined in `latex.el'.
Its value is 0
Local in buffer test.Rnw; global value is 2

  This variable is a file local variable.

但是,在编辑代码块后,它会返回默认行为。 C-h v LaTeX-indent-level现在产生:

LaTeX-indent-level is a variable defined in `latex.el'.
Its value is 2

我尝试了the noweb-mode FAQ中建议的修复,建议添加

(add-hook 'noweb-select-mode-hook
              '(lambda () (hack-local-variables-prop-line)))

到我的.emacs。当我这样做时,上述行为仍然存在。

有什么办法可以让缓冲区局部变量在这种情况下工作?我不想在所有Sweave / noweb缓冲区中更改我的.emacs以将LaTeX-indent-level设置为0。

1 个答案:

答案 0 :(得分:0)

我没有对此进行测试,但请尝试以下方法:

(add-hook 'noweb-select-mode-hook
              '(lambda () (hack-local-variables)))

也许hack-local-variables-prop-line已被更改为仅解析值,而不是实例化。