From 1b93c5be9d8a530d837fe680b33772f1968c248b Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Mon, 3 Dec 2018 08:56:58 -0500 Subject: [PATCH] [emacs] switch from shell-pop to shell-toggle MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit for some reason, shell-pop wouldn’t save eshell history --- .gitmodules | 6 +++--- init.org | 53 ++++++++++++++++++++++++++++++++++++++++-------- lib/shell-pop | 1 - lib/shell-toggle | 1 + 4 files changed, 49 insertions(+), 12 deletions(-) delete mode 160000 lib/shell-pop create mode 160000 lib/shell-toggle diff --git a/.gitmodules b/.gitmodules index c16e0b2..bbf0f16 100644 --- a/.gitmodules +++ b/.gitmodules @@ -265,9 +265,9 @@ [submodule "s"] path = lib/s url = git@github.com:magnars/s.el.git -[submodule "shell-pop"] - path = lib/shell-pop - url = git@github.com:kyagi/shell-pop-el.git +[submodule "shell-toggle"] + path = lib/shell-toggle + url = git@github.com:knu/shell-toggle.el.git [submodule "shrink-path"] path = lib/shrink-path url = git@gitlab.com:bennya/shrink-path.el.git diff --git a/init.org b/init.org index 4ff8b94..5c24b9e 100644 --- a/init.org +++ b/init.org @@ -1059,7 +1059,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package eshell - :defer t + :defer 1 :commands eshell :config (eval-when-compile (defvar eshell-prompt-regexp)) @@ -1808,15 +1808,52 @@ Emacs package that displays available keybindings in popup "h h p" 'helpful-at-point)) #+end_src -** [[https://github.com/kyagi/shell-pop-el][shell-pop]] +** [[https://github.com/knu/shell-toggle.el][shell-toggle]] #+begin_src emacs-lisp -(use-package shell-pop - :defer 1 - :general (amin--leader-keys "a s" 'shell-pop) - :init - (setq shell-pop-universal-key "C-c e" - shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell))))) +(use-package shell-toggle + :after eshell + :general (amin--leader-keys "a s" 'amin/shell-toggle) + :bind ("C-c 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 ** [[https://github.com/EricCrosson/unkillable-scratch][unkillable-scratch]] diff --git a/lib/shell-pop b/lib/shell-pop deleted file mode 160000 index 4a3a9d0..0000000 --- a/lib/shell-pop +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4a3a9d093ad1add792bba764c601aa28de302b34 diff --git a/lib/shell-toggle b/lib/shell-toggle new file mode 160000 index 0000000..0d01bd9 --- /dev/null +++ b/lib/shell-toggle @@ -0,0 +1 @@ +Subproject commit 0d01bd9a780fdb7fe6609c552523f4498649a3b9 -- 2.20.1