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)
(side . right)
(slot . 0)
(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)))))
(window-width . 0.33)))))
(use-package winner
:commands (winner-mode winner-undo winner-redo))

View File

@ -23,8 +23,10 @@
;; Various
(defun db/run-or-hide-eshell (arg)
"Opens an eshell buffer if not already in one.
Otherwise moves the cursor to the window where we have been before."
"Opens an eshell buffer if not already in one, and otherwise
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")
(if (derived-mode-p 'eshell-mode)
;; 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)))
(if-let ((eshell-window (db/find-window-by-buffer-mode 'eshell-mode)))
(select-window eshell-window)
;; No running eshell found, open new one.
(let* ((current-dir (expand-file-name default-directory)))
(--if-let (display-buffer (eshell 1))
(select-window it)
(error "Could not start eshell (`display-buffer' returned nil)"))
;; open eshell
(let* ((current-dir (expand-file-name default-directory))
(height (/ (frame-text-lines) 3)))
(select-window (split-window (frame-root-window) (- height) 'below))
(eshell 1)
(when arg
(end-of-line)
(eshell-kill-input)
(insert (format "cd '%s'" current-dir))
(eshell-send-input))))))
(eshell-send-input))))
(set-window-dedicated-p (selected-window) t)))
(defun eshell-clear-buffer ()
"Clear terminal."

View File

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