假设我有一个变量newName,它带有一些模式名称,例如"python-mode".如何创建newName指定的模式的当前缓冲区?
(progn
(let (newName)
(setq newName "python-mode")
(newName) ;; doesn't work! It doesn't set current buffer's mode to be a python mode.
)
)
Run Code Online (Sandbox Code Playgroud)
这也行不通:
(set-variable 'major-mode "python-mode")
Run Code Online (Sandbox Code Playgroud)
这个问题是基本的 - 因为它等于"是否真的可以将数据视为lisp中的代码?"
编辑
@phils
您的解决方案对我不起作用.我复制一个缓冲区 - 我希望新的缓冲区具有与旧缓冲区相同的模式.所以我将原始缓冲区的模式存储在变量中.然后尝试应用您的解决方案.它给出了错误(这是本质 - 我在这里省略了缓冲区复制的东西):
(let (sameMode)
(setq sameMode major-mode)
(funcall (intern sameMode))
)
Run Code Online (Sandbox Code Playgroud)
sameMode以"python-mode"的形式存储此模式(python-mode的示例).
(let ((mode "python-mode"))
(funcall (intern mode)))
Run Code Online (Sandbox Code Playgroud)
要么
(let ((mode 'python-mode))
(funcall mode))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
562 次 |
| 最近记录: |