diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-05-28 00:42:43 +0100 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-05-28 00:42:43 +0100 |
commit | 071c77936fcdd8752421abd318abe5db5c36b068 (patch) | |
tree | 140532ef65aa732758d79394321e23a7fb0c09e7 | |
parent | ba42346407097f1a844a9ae47b5e27d74adb3bbd (diff) | |
download | dotfiles-071c77936fcdd8752421abd318abe5db5c36b068.tar.gz dotfiles-071c77936fcdd8752421abd318abe5db5c36b068.tar.bz2 dotfiles-071c77936fcdd8752421abd318abe5db5c36b068.zip |
Add support for detached head in git repos for eshell-prompt
-rw-r--r-- | Emacs/.config/emacs/elisp/eshell-prompt.el | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/Emacs/.config/emacs/elisp/eshell-prompt.el b/Emacs/.config/emacs/elisp/eshell-prompt.el index d0a4e91..dafd8ea 100644 --- a/Emacs/.config/emacs/elisp/eshell-prompt.el +++ b/Emacs/.config/emacs/elisp/eshell-prompt.el @@ -79,18 +79,28 @@ number of files affected are returned in red." 'font-lock-face `(:foreground ,+eshell-prompt/failure-colour))))) +(defun +eshell-prompt/--git-branch-name () + (let* ((branch-name (thread-last + (split-string (shell-command-to-string "git branch") "\n") + (cl-remove-if (lambda (s) (= (length s) 0))) + (cl-find-if (lambda (s) (string= "*" (substring s 0 1)))))) + (branch-name (if (null branch-name) nil + (substring branch-name 2)))) + (cond + ((null branch-name) nil) + ((string= "(" (substring branch-name 0 1)) + (replace-regexp-in-string "\\(.*at \\)\\|)" "" branch-name)) + (t branch-name)))) + (defun +eshell-prompt/--git-status () "Returns a completely formatted string of form (BRANCH-NAME<CHANGES>[REMOTE-STATUS])." - (let ((git-branch (thread-last - (split-string (shell-command-to-string "git branch") "\n") - (cl-remove-if (lambda (s) (= (length s) 0))) - (cl-find-if (lambda (s) (string= "*" (substring s 0 1))))))) + (let ((git-branch (+eshell-prompt/--git-branch-name))) (if (null git-branch) "" (format "(%s<%s>[%s])" - (nth 2 (split-string git-branch "\n\\|\\*\\| ")) + git-branch (+eshell-prompt/--git-change-status) (+eshell-prompt/--git-remote-status))))) |