Emacs:仅在重新启动后执行函数,而不是在计算缓冲区后执行

Emacs:仅在重新启动后执行函数,而不是在计算缓冲区后执行,emacs,startup,Emacs,Startup,我喜欢用两个打开的窗口在Emacs中开始工作。为此,我在.emacs文件中有一个函数(水平拆分窗口) 它可以毫无问题地工作,在每次计算.emacs缓冲区后将窗口拆分为两个并排的窗口。当然,每次我重新评估.emacs文件以测试一些新设置时,它也会拆分窗口。如何告诉emacs在每次计算.emacs缓冲区后不要分割窗口,而是在重新启动emacs后才分割窗口 我要找的东西是: (eval-only-after-restart (split-window-horizontally)) 有这样的功

我喜欢用两个打开的窗口在Emacs中开始工作。为此,我在.emacs文件中有一个函数(水平拆分窗口)

它可以毫无问题地工作,在每次计算.emacs缓冲区后将窗口拆分为两个并排的窗口。当然,每次我重新评估.emacs文件以测试一些新设置时,它也会拆分窗口。如何告诉emacs在每次计算.emacs缓冲区后不要分割窗口,而是在重新启动emacs后才分割窗口

我要找的东西是:

(eval-only-after-restart
    (split-window-horizontally))
有这样的功能吗?或者另一种方法如何做?

如下:

(unless (boundp 'done-split-window-horizontally)
  (split-window-horizontally)
  (setq done-split-window-horizontally t))

至于我,我在
M-F12
上有一个宏,它最大化emacs窗口(
M-x maximize
)并垂直拆分它。因为我是手动激活的,所以我决定什么时候做,什么时候不做。我想说的是,在开始时自动拆分可能是个好主意,但也许不是最好的。

< P>而不是在添加新事物时重新评估整个缓冲区,只考虑在添加的“EXP>CX-C-E”的结尾,对所添加的EXP进行评估。

< P>另一种方式:

(add-hook 'emacs-startup-hook #'split-window-horizontally)

谢谢你,先生!优雅的解决方案。什么是
boundp
setq
?它们是elisp表单。它们都是有文档记录的,所以当您将光标放在其中任何一个上时,键入
f
以了解它们的作用。您是说水平的吗?水平拆分一般,先进行垂直拆分。