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

标签 emacs buffer elisp mode

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

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

感谢所有的帮助!

最佳答案

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

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

如果您有一个缓冲区和一个绑定(bind)到主要模式的变量,您可以使用以下内容:
(with-current-buffer buffer
  (funcall the-mode-i-want))

同样,如果您有一个绑定(bind)到字符串的变量,您必须使用 intern 将其转换为符号。 :
(with-current-buffer buffer
  (funcall (intern the-name-of-the-mode-i-want)))

关于emacs - 使用 emacs lisp 以编程方式设置缓冲区的主要模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419164/

相关文章:

macos - 如何让方案解释器在 Emacs 中工作?

c# - MemoryStream.Read 不会将字节复制到缓冲区 - c#

regex - 匹配 elisp 正则表达式中的搜索开始位置

c - 一个char数组可以有多少个字符?

Emacs:如何让自定义了解新代码?

emacs - ido-completing-read - 如何将 C-j 绑定(bind)到另一个操作?

Emacs 和符号链接(symbolic link)

emacs - 在守护进程 Emacs 中使用字体列表

windows - Emacs + 史莱姆 + SBCL ( Windows )

java - 如何在我的项目中定义声音作为铃声和通知?