From: Amin Bandali Date: Mon, 12 Nov 2018 03:47:57 +0000 (-0500) Subject: [emacs] customize the eshell prompt X-Git-Url: https://git.shemshak.org/~bandali/configs/commitdiff_plain/6827bbb0cbb1d792911811bcfd1739c5817db2b1 [emacs] customize the eshell prompt adapted from https://gitlab.com/bennya/shrink-path.el --- diff --git a/init.org b/init.org index d4da17d..127926d 100644 --- a/init.org +++ b/init.org @@ -1782,6 +1782,37 @@ Hopefully temporary. (global-hl-todo-mode)) #+end_src +** shrink-path + +#+begin_src emacs-lisp +(use-package shrink-path + :after eshell + :config + (setq eshell-prompt-regexp "\\(.*\n\\)*λ " + eshell-prompt-function #'+eshell/prompt) + + (defun +eshell/prompt () + (let ((base/dir (shrink-path-prompt default-directory))) + (concat (propertize (car base/dir) + 'face 'font-lock-comment-face) + (propertize (cdr base/dir) + 'face 'font-lock-constant-face) + (propertize (+eshell--current-git-branch) + 'face 'font-lock-function-name-face) + "\n" + (propertize "λ" 'face 'eshell-prompt-face) + ;; needed for the input text to not have prompt face + (propertize " " 'face 'default)))) + + (defun +eshell--current-git-branch () + (let ((branch (car (loop for match in (split-string (shell-command-to-string "git branch") "\n") + when (string-match "^\*" match) + collect match)))) + (if (not (eq branch nil)) + (concat " " (substring branch 2)) + "")))) +#+end_src + * Email #+begin_src emacs-lisp