;; -*- lexical-binding: t; -*- (defun eshell-open-buffer () "Opens eshell in the bottom side window." (interactive) (let ((curr-buffer (current-buffer)) (eshell (eshell))) (switch-to-buffer curr-buffer) (display-buffer-in-side-window (get-buffer eshell) '((side . top))) (switch-to-buffer-other-window eshell))) (defun bd/get-prompt-path () (abbreviate-file-name (eshell/pwd))) (defun bd/eshell-prompt () "Assemble a shell prompt including host, git status, and path." (let ((current-branch (magit-get-current-branch))) (concat "\n" (propertize (system-name) 'face `(:foreground "#edb54b")) (when current-branch (concat (format " %s " (all-the-icons-octicon "git-branch")) (propertize current-branch 'face `(:foreground "#98d1ce")))) (format " %s " (all-the-icons-fileicon "gn")) (propertize (bd/get-prompt-path) 'face `(:foreground "#33859d")) (propertize (format-time-string " %a, %R") 'face `(:foreground "#888ba5")) (propertize "\n> " 'face `(:foreground "#c33027"))))) (use-package eshell :demand :bind (("C-z C-e" . 'eshell-open-buffer) :map eshell-mode-map ("C-q" . 'delete-window) ; mostly for side window ("" . completion-at-point)) :config ;; (eshell/addpath "~/Personal/scripts/") :custom (eshell-prompt-function 'bd/eshell-prompt) (eshell-prompt-regexp "^> ") (eshell-scroll-to-bottom-on-input 'this) (eshell-banner-message (concat "\n" (propertize " " 'display (create-image (expand-file-name "~/.config/emacs/images/raven.png") 'png nil :scale 0.2 :align-to "center")) "\n"))) (use-package term :config (defalias 'term 'ansi-term))