Compare commits

..

No commits in common. "47d7e31800e72c626b783065269fb79d4694fcf1" and "a3247158aad50c8d59cf311a863faee5f74b7816" have entirely different histories.

3 changed files with 17 additions and 26 deletions

16
init.el
View File

@ -622,21 +622,7 @@
(display-buffer-in-side-window) (display-buffer-in-side-window)
(side . right) (side . right)
(slot . 0) (slot . 0)
(window-width . 0.33))) (window-width . 0.33)))))
;; Inspired by masteringemacs
(add-to-list 'display-buffer-alist
'("^\\*Help\\*"
(display-buffer-reuse-window
display-buffer-pop-up-window)
(inhibit-same-window . t)))
;; Inspired by masteringemacs
(add-to-list 'display-buffer-alist
'("^\\*e?shell\\*"
display-buffer-in-direction
(direction . bottom)
(window . root)
(window-height . 0.33)
(dedicated . t)))))
(use-package winner (use-package winner
:commands (winner-mode winner-undo winner-redo)) :commands (winner-mode winner-undo winner-redo))

View File

@ -23,8 +23,10 @@
;; Various ;; Various
(defun db/run-or-hide-eshell (arg) (defun db/run-or-hide-eshell (arg)
"Opens an eshell buffer if not already in one. "Opens an eshell buffer if not already in one, and otherwise
Otherwise moves the cursor to the window where we have been before." returns to where we have been before."
;; idea to split the current window is from
;; http://howardism.org/Technical/Emacs/eshell-fun.html
(interactive "P") (interactive "P")
(if (derived-mode-p 'eshell-mode) (if (derived-mode-p 'eshell-mode)
;; bury buffer; reopen with current working directory if arg is given ;; bury buffer; reopen with current working directory if arg is given
@ -33,16 +35,17 @@ Otherwise moves the cursor to the window where we have been before."
(and arg (db/run-or-hide-eshell arg))) (and arg (db/run-or-hide-eshell arg)))
(if-let ((eshell-window (db/find-window-by-buffer-mode 'eshell-mode))) (if-let ((eshell-window (db/find-window-by-buffer-mode 'eshell-mode)))
(select-window eshell-window) (select-window eshell-window)
;; No running eshell found, open new one. ;; open eshell
(let* ((current-dir (expand-file-name default-directory))) (let* ((current-dir (expand-file-name default-directory))
(--if-let (display-buffer (eshell 1)) (height (/ (frame-text-lines) 3)))
(select-window it) (select-window (split-window (frame-root-window) (- height) 'below))
(error "Could not start eshell (`display-buffer' returned nil)")) (eshell 1)
(when arg (when arg
(end-of-line) (end-of-line)
(eshell-kill-input) (eshell-kill-input)
(insert (format "cd '%s'" current-dir)) (insert (format "cd '%s'" current-dir))
(eshell-send-input)))))) (eshell-send-input))))
(set-window-dedicated-p (selected-window) t)))
(defun eshell-clear-buffer () (defun eshell-clear-buffer ()
"Clear terminal." "Clear terminal."

View File

@ -74,9 +74,11 @@ If already in `*ansi-term*' buffer, bury it."
(cl-flet ((change-to-shell () (cl-flet ((change-to-shell ()
(if-let ((shell-window (db/find-window-by-buffer-mode 'shell-mode))) (if-let ((shell-window (db/find-window-by-buffer-mode 'shell-mode)))
(select-window shell-window) (select-window shell-window)
(--if-let (display-buffer (shell)) ;; open shell in buffer with height of ⅓ of current window
(select-window it) (let ((height (/ (frame-text-lines) 3)))
(error "Could not start shell (`display-buffer' returned nil)"))))) (select-window (split-window (frame-root-window) (- height) 'below))
(shell)))
(set-window-dedicated-p (selected-window) t)))
(if (not arg) (if (not arg)
;; toggle shell window ;; toggle shell window
(if (not (derived-mode-p 'shell-mode)) (if (not (derived-mode-p 'shell-mode))