假设我有一个变量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.
)
)这也不起作用:
(set-variable 'major-mode "python-mode")这个问题是根本的--因为它等于“真的有可能将数据作为lisp中的代码处理吗?”
编辑
@phils
你的解决方案对我没用。我复制一个缓冲区--我希望新的缓冲区具有与旧缓冲区相同的模式。因此,我将原始缓冲区的模式存储在变量中。然后尝试应用你的解决方案。它会产生错误(这是本质--我省略了缓冲区复制的内容):
(let (sameMode)
(setq sameMode major-mode)
(funcall (intern sameMode))
)sameMode在这里以“python”的形式存储模式(例如python)。
发布于 2011-09-24 14:59:32
(let ((mode "python-mode"))
(funcall (intern mode)))或
(let ((mode 'python-mode))
(funcall mode))https://stackoverflow.com/questions/7539615
复制相似问题