[英]Emacs: how do I set a major-mode stored in a variable?
假設我有一個帶有某些模式名稱的變量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-mode”的形式存儲模式(例如python-mode的示例)。
(let ((mode "python-mode"))
(funcall (intern mode)))
要么
(let ((mode 'python-mode))
(funcall mode))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.