2017-07-07 66 views
0

我试图以Emacs打开两个窗口拆分和ansi-term打开的方式来定制我的Emacs init文件,并在我的init文件另一边。现在,如果Emacs已经打开,我写的函数(switch-to-next-window)完美工作。emacs init - 拆分窗口并打开相邻的文件

我希望能够将光标切换到另一个窗口,然后在那里打开我的init文件。但是,如果我试图在启动时运行(实际上启动后,至少这是我的想法),我得到以下错误: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")) 
+0

你可能要考虑使用[桌面](https://www.gnu.org/software/emacs/manual/ html_node/emacs/Saving-Emacs-Sessions.html)。 – sds

回答

0

更改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"))) 
+0

谢谢你,完美的作品!仍然努力寻找在emacs中可用的功能 – SandraK

相关问题