+ ;; (defun eshell-x ()
+ ;; (insert "exit")
+ ;; (eshell-send-input)
+ ;; (delete-window))
+
+ ;; (defun sd/toggle-eshell ()
+ ;; "Open a eshell windows vertically"
+ ;; (interactive)
+ ;; (if 1
+ ;; (message "true")
+ ;; (progn
+ ;; (split-window-vertically (- (/ (window-total-height) 3)))
+ ;; (other-window 1)
+ ;; (switch-to-buffer eshell-buffer-name)
+ ;; (goto-char (point-max))
+ ;; (eshell-kill-input)
+ ;; (insert (format "cd %s" default-directory))
+ ;; (eshell-send-input)
+ ;; (goto-char (point-max))
+ ;; (insert (concat "ls"))
+ ;; (eshell-send-input))))
+ ;; (defun eshell-here ()
+ ;; "Opens up a new shell in the directory associated with the
+ ;; current buffer's file. The eshell is renamed to match that
+ ;; directory to make multiple eshell windows easier."
+ ;; (interactive)
+ ;; (let* ((parent (if (buffer-file-name)
+ ;; (file-name-directory (buffer-file-name))
+ ;; default-directory))
+ ;; (height (/ (window-total-height) 3))
+ ;; (name (car (last (split-string parent "/" t))))
+ ;; (eshell-name (concat "*eshell: " name "*")))
+ ;; (split-window-vertically (- height))
+ ;; (other-window 1)
+ ;; (if (get-buffer eshell-name)
+ ;; (progn
+ ;; (message "buffer exist")
+ ;; (switch-to-buffer eshell-name))
+ ;; (progn
+ ;; (eshell "new")
+ ;; (rename-buffer eshell-name)
+
+ ;; (insert (concat "ls"))
+ ;; (eshell-send-input)))))
+
+ ;; (global-unset-key (kbd "M-`"))
+ ;; (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"