使用emacs lisp以编程方式设置缓冲区的主要模式

时间:2014-10-17 06:31:03

标签: emacs buffer elisp mode

我希望以编程方式设置缓冲区的主要模式。我已经深入研究了文档,函数set-buffer-major-mode只接受了一个缓冲区对象。我本质上是在寻找一个带缓冲区对象和模式名称的函数。

或者,我也尝试使用auto-mode-alist强制缓冲区具有文件扩展名,但即使我调用set-buffer-major-mode函数也不起作用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:8)

基础是,如果您想切换到my模式,您只需拨打my-mode,例如:

(with-current-buffer buffer
  (my-mode))

如果您有一个缓冲区和一个绑定到主模式的变量,您可以使用以下内容:

(with-current-buffer buffer
  (funcall the-mode-i-want))

同样,如果您有一个绑定到字符串的变量,则必须使用intern将其转换为符号:

(with-current-buffer buffer
  (funcall (intern the-name-of-the-mode-i-want)))