下面的代码只在基本模式下生成新的缓冲区,而我还没有弄清楚如何让新的临时缓冲区在文本模式下自动生成。。。任何帮助都将不胜感激。
(setq initial-major-mode 'text-mode)
(defun new-frame-with-scratch ()
"Open a new frame with scratch buffer selected"
(interactive)
(let ((frame (make-frame)))
(select-frame-set-input-focus frame)
(if (get-buffer-create "*lawlist*" )
(switch-to-buffer "*lawlist*" 'norecord))))发布于 2013-04-26 14:35:51
initial-major-mode仅在创建初始*scratch*缓冲区时使用,所以我认为它在这方面对您没有帮助。您必须显式更改新创建的*lawlist*缓冲区中的模式:
(defun new-frame-with-scratch ()
"Open a new frame with scratch buffer selected"
(interactive)
(let ((frame (make-frame))
(scratch-name "*lawlist*"))
(select-frame-set-input-focus frame)
(unless (get-buffer scratch-name)
(with-current-buffer (get-buffer-create scratch-name)
(text-mode)))
(switch-to-buffer scratch-name 'norecord)))如果您希望在每次调用new-frame-with-scratch时都将*lawlist*缓冲区无条件地设置为text-mode,那么逻辑可以变得更简单。
发布于 2013-04-26 20:43:11
您可以简单地删除您的(if (get-buffer-create "*lawlist*" ),因为如果缓冲区不存在,switch-to-buffer将创建它,如果它创建了它,那么它将调用set-buffer-major-mode。但请注意,initial-major-mode只适用于名为*scratch*的缓冲区,您应该改为(setq-default major-mode 'text-mode)。更简单的方法是显式地调用你想要的主要模式,就像Francesco提出的解决方案一样。
https://stackoverflow.com/questions/16229896
复制相似问题