;; -*- lexical-binding: t; -*- (require 'all-the-icons) ;;;; term (defalias 'term 'ansi-term) ;;;; 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." (concat "\n" (propertize (system-name) 'face `(:foreground "#edb54b")) (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")))) (require 'esh-mode) (keymap-set eshell-mode-map "" 'completion-at-point) (setopt 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")) ;;;; shell (defun shell-open-buffer () "Opens eshell in the bottom side window." (interactive) (let ((curr-buffer (current-buffer)) (shell (shell))) (switch-to-buffer curr-buffer) (display-buffer-in-side-window (get-buffer shell) '((side . top))) (switch-to-buffer-other-window shell))) (require 'shell) (keymap-global-set "C-z C-e" 'shell-open-buffer) (keymap-set eshell-mode-map "C-q" 'delete-window) ; mostly for side window (keymap-set shell-mode-map "C-c C-k" #'comint-clear-buffer) (setopt shell-command-prompt-show-cwd t shell-highlight-undef-enable t shell-kill-buffer-on-exit t comint-prompt-read-only t) (provide 'bd--shells)