diff options
author | Amin Bandali <bandali@gnu.org> | 2018-12-03 08:56:58 -0500 |
---|---|---|
committer | Amin Bandali <bandali@gnu.org> | 2018-12-03 08:58:50 -0500 |
commit | 1b93c5be9d8a530d837fe680b33772f1968c248b (patch) | |
tree | 00b06d4a28a6e2c4c6ffd00ce71a471012a62546 | |
parent | e505cb8c77c605e8bd1341e4a463635a367500af (diff) | |
download | configs-1b93c5be9d8a530d837fe680b33772f1968c248b.tar.gz configs-1b93c5be9d8a530d837fe680b33772f1968c248b.tar.xz configs-1b93c5be9d8a530d837fe680b33772f1968c248b.zip |
[emacs] switch from shell-pop to shell-toggle
for some reason, shell-pop wouldn’t save eshell history
-rw-r--r-- | .gitmodules | 6 | ||||
-rw-r--r-- | init.org | 53 | ||||
m--------- | lib/shell-pop | 0 | ||||
m--------- | lib/shell-toggle | 0 |
4 files changed, 48 insertions, 11 deletions
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 @@ -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 -Subproject 4a3a9d093ad1add792bba764c601aa28de302b3 diff --git a/lib/shell-toggle b/lib/shell-toggle new file mode 160000 +Subproject 0d01bd9a780fdb7fe6609c552523f4498649a3b |