2017-07-07 32 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

相關問題