【问题标题】:emacs init - splitting window and opening files next to each otheremacs init - 拆分窗口并打开彼此相邻的文件
【发布时间】:2017-07-07 08:38:19
【问题描述】:

我正在尝试以这样一种方式自定义我的 Emacs 初始化文件,即 Emacs 打开时会拆分两个窗口,并且在一侧打开 ansi-term,在另一侧打开我的初始化文件。现在,如果 Emacs 已经打开,我编写的函数 (switch-to-next-window) 可以完美运行。

我希望将光标切换到另一个窗口,然后在那里打开我的初始化文件。但是,如果我尝试在启动时运行它(实际上是在启动之后,至少这是我的想法),我会收到以下错误:window-live-p, nil

我猜没有“下一个窗口”。但是我只是不知道这里有什么工作,因为我确实认为我只是在 Emacs 完全启动后才调用我的函数?如果有人能指出我的逻辑哪里出了问题,那就太好了!

(split-window-horizontally)
(setq initial-buffer-choice "*ansi-term*")

(defun switch-to-next-window ()
  (interactive)
  (let* ((next-window (get-buffer-window (other-buffer (current-buffer) t))))
    (select-window next-window)))

(add-hook 'emacs-startup-hook (lambda ()(ansi-term "/bin/bash")))
(with-eval-after-load "~/.emacs.d/init.el"
  (switch-to-next-window)
  (setq initial-buffer-choice "~/.emacs.d/init.el"))

【问题讨论】:

  • 您可能要考虑改用desktop

标签: emacs init


【解决方案1】:

在打开初始缓冲区后更改 initial-buffer-choice 不会有任何效果。

将所有内容放入emacs-startup-hook 并使用find-file-other-window 函数会有所帮助:

(add-hook 'emacs-startup-hook
          (lambda ()
            (ansi-term "/bin/bash")
            (split-window-horizontally)
            (find-file-other-window "~/.emacs.d/init.el")))

【讨论】:

  • 谢谢你完美的工作!仍在努力在 emacs 中找到所有可用的功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-26
相关资源
最近更新 更多