-** [[https://github.com/knu/shell-toggle.el][shell-toggle]]
-
-#+begin_src emacs-lisp
-(use-package shell-toggle
- :after eshell
- :bind ("C-c a s e" . amin/shell-toggle)
- :config
- (defun amin/shell-toggle (make-cd)
- "Toggle between the shell buffer and whatever buffer you are editing.
-With a prefix argument MAKE-CD also insert a \"cd DIR\" command
-into the shell, where DIR is the directory of the current buffer.
-
-When called in the shell buffer returns you to the buffer you were editing
-before calling this the first time.
-
-Options: `shell-toggle-goto-eob'"
- (interactive "P")
- ;; Try to decide on one of three possibilities:
- ;; If not in shell-buffer, switch to it.
- ;; If in shell-buffer, return to state before going to the shell-buffer
- (if (eq (current-buffer) shell-toggle-shell-buffer)
- (shell-toggle-buffer-return-from-shell)
- (progn
- (shell-toggle-buffer-goto-shell make-cd)
- (if shell-toggle-full-screen-window-only (delete-other-windows)))))
-
- ;; override to split horizontally instead
- (defun shell-toggle-buffer-switch-to-other-window ()
- "Switch to other window.
-If the current window is the only window in the current frame,
-create a new window and switch to it.
-
-\(This is less intrusive to the current window configuration than
-`switch-buffer-other-window')"
- (let ((this-window (selected-window)))
- (other-window 1)
- ;; If we did not switch window then we only have one window and need to
- ;; create a new one.
- (if (eq this-window (selected-window))
- (progn
- (split-window-horizontally)
- (other-window 1)))))
-
- :custom
- (shell-toggle-launch-shell 'shell-toggle-eshell))
-#+end_src
-