|------------------|
| old buffer - 70% |
| |
| |
| |
|------------------|
| |
| eshell - 30% |
|------------------|
如果缓冲区中只有一个窗口
1.1将缓冲区拆分为2个部分:顶部 - 高度的70%,底部 - 高度的30%。
1.2。将光标放在底部缓冲区。
1.3。打开eshell。
(defun new-eshell ()
(interactive)
(when (one-window-on-screen-p)
(let ((new-window (split-window-vertically 30)))
(select-window new-window)
(eshell "eshell"))))
(defun one-window-on-screen-p ()
(= (length (window-list)) 1))
(global-set-key "\M-e" 'new-eshell)
当我第一次点击Alt-e
时,该功能正常工作。但是如果我隐藏了eshell缓冲区,并且第二次单击Alt-e
,则窗口将以50/50的比例分割,并且"*eshell<2>*"
缓冲区将在顶部而不是底部打开。
答案 0 :(得分:1)
我认为问题在于split-lines-vertically
的参数是指多行,而不是一定比例。这段代码对我有用:
(defun new-eshell ()
(interactive)
(when (one-window-on-screen-p)
(let* ((lines (window-body-height))
(new-window (split-window-vertically (floor (* 0.7 lines)))))
(select-window new-window)
(eshell "eshell"))))
(顺便说一句,如果我将浮点数传递给split-lines-vertically
,我获得了奇怪的结果,所以我不得不使用floor
)