diff options
Diffstat (limited to '.emacs.d/lisp/init-shell.el')
-rw-r--r-- | .emacs.d/lisp/init-shell.el | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/.emacs.d/lisp/init-shell.el b/.emacs.d/lisp/init-shell.el index 4a03b27..bf737cb 100644 --- a/.emacs.d/lisp/init-shell.el +++ b/.emacs.d/lisp/init-shell.el @@ -9,6 +9,31 @@ (eshell-mode-hook . (lambda () (setenv "TERM" "xterm-256color"))) :custom (eshell-directory-name (expand-file-name "eshell" save-dir)) + ;; https://lambdaland.org/posts/2024-08-19_fancy_eshell_prompt/#eshell-prompt + (eshell-highlight-prompt nil) + (eshell-prompt-regexp "^[^#$\n]* [$#] ") + (eshell-prompt-function + (lambda () + (let* ((cwd (abbreviate-file-name (eshell/pwd))) + (ref (magit-get-shortname "HEAD")) + (stat (magit-file-status)) + (x-stat eshell-last-command-status) + (git-chunk + (if ref + (format "%s%s%s " + (propertize (if stat "[" "(") 'font-lock-face (list :foreground (if stat "red" "green"))) + (propertize ref 'font-lock-face '(:foreground "yellow")) + (propertize (if stat "]" ")") 'font-lock-face (list :foreground (if stat "red" "green")))) + ""))) + (propertize + (format "%s %s %s$ " + (if (< 0 x-stat) (format (propertize "!%s" 'font-lock-face '(:foreground "red")) x-stat) + (propertize "➤" 'font-lock-face (list :foreground (if (< 0 x-stat) "red" "green")))) + (propertize cwd 'font-lock-face '(:foreground "#45babf")) + git-chunk) + 'read-only t + 'front-sticky '(font-lock-face read-only) + 'rear-nonsticky '(font-lock-face read-only))))) :config (setenv "PAGER" "cat")) |