From 5aae6ccd189a41b3e84c885b653f6c5a1c82340a Mon Sep 17 00:00:00 2001 From: Peng Li Date: Sat, 2 Jul 2016 20:11:32 +0800 Subject: [PATCH] emacs - add sd/toggle-eshell-here function --- emacs.d/config.org | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/emacs.d/config.org b/emacs.d/config.org index e7e50e1..d6e6b70 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -1238,6 +1238,42 @@ Quickly start eshll in split window below, refer [[http://www.howardism.org/Tech (global-set-key (kbd "M-`") #'eshell-here) #+END_SRC +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defun sd/window-has-eshell () + "Check if current windows list has a eshell buffer, and return the window" + (interactive) + (let ((ret nil)) + (dolist (window (window-list)) + (let ((modename (with-current-buffer (window-buffer window) + major-mode))) + (if (equal modename 'eshell-mode) + (setq ret window)))) + ret)) + + (defun sd/toggle-eshell-here () + "Toggle a eshell buffer vertically" + (interactive) + (if (sd/window-has-eshell) + (if (equal major-mode 'eshell-mode) + (delete-window) + (select-window (sd/window-has-eshell))) + (progn + (split-window-vertically (- (/ (window-total-height) 3))) + (other-window 1) + (unless (get-buffer eshell-buffer-name) + (eshell)) + (switch-to-buffer eshell-buffer-name) + (goto-char (point-max)) + (eshell-kill-input) + (message "wowo is %s" default-directory) + (message "wowo is %s" (file-name-directory (buffer-name))) + (insert (format "cd %s" default-directory)) + (eshell-send-input)))) + + (global-unset-key (kbd "M-`")) + (global-set-key (kbd "M-`") 'sd/toggle-eshell-here) +#+END_SRC + * Misc Settings ** [[https://github.com/abo-abo/hydra][Hydra]] @@ -1323,7 +1359,7 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex (interactive) (split-window-below) (windmove-down)) - "horz" :exit) + "horz" :exit t) ("o" delete-other-windows "one" :exit t) ("a" ace-window "ace") ("s" ace-swap-window "swap") -- 2.11.0