Add name of current git branch to eshell prompt
Inspired by configuration from Howard Abrams, see https://github.com/howardabrams/dot-files/blob/master/emacs-eshell.org#special-prompt.
This commit is contained in:
parent
2d3efbb7c0
commit
a6f876d4f4
|
@ -53,12 +53,28 @@
|
||||||
(erase-buffer)
|
(erase-buffer)
|
||||||
(eshell-send-input)))
|
(eshell-send-input)))
|
||||||
|
|
||||||
|
(defun db/eshell-git-branch-string ()
|
||||||
|
;; Inspired by https://github.com/howardabrams/dot-files/blob/master/emacs-eshell.org#special-prompt
|
||||||
|
"Return name of git branch of current directory, as a string.
|
||||||
|
Return the empty string if the current directory is not part of a
|
||||||
|
git repository."
|
||||||
|
(interactive)
|
||||||
|
(let ((pwd (eshell/pwd)))
|
||||||
|
(when (and (not (file-remote-p pwd))
|
||||||
|
(eshell-search-path "git")
|
||||||
|
(locate-dominating-file pwd ".git"))
|
||||||
|
(save-match-data
|
||||||
|
(string-trim
|
||||||
|
(shell-command-to-string "git rev-parse --abbrev-ref HEAD"))))))
|
||||||
|
|
||||||
(defun eshell/default-prompt-function ()
|
(defun eshell/default-prompt-function ()
|
||||||
"A prompt for eshell of the form
|
"A prompt for eshell of the form
|
||||||
|
|
||||||
┌─[$USER@$HOST] [$PWD]
|
┌─[$USER@$HOST] [$PWD] (current-git-branch)
|
||||||
└─
|
└─
|
||||||
|
|
||||||
|
Information about the current git branch will be empty when
|
||||||
|
the current directory is not part of a git repository.
|
||||||
"
|
"
|
||||||
(let ((head-face '(:foreground "#859900")))
|
(let ((head-face '(:foreground "#859900")))
|
||||||
(concat (propertize "┌─" 'face head-face)
|
(concat (propertize "┌─" 'face head-face)
|
||||||
|
@ -68,6 +84,8 @@
|
||||||
" "
|
" "
|
||||||
(propertize (abbreviate-file-name (eshell/pwd))
|
(propertize (abbreviate-file-name (eshell/pwd))
|
||||||
'face '(:foreground "#dc322f"))
|
'face '(:foreground "#dc322f"))
|
||||||
|
(when-let ((git-branch (db/eshell-git-branch-string)))
|
||||||
|
(format " (%s)" git-branch))
|
||||||
"\n"
|
"\n"
|
||||||
(propertize "└─" 'face head-face)
|
(propertize "└─" 'face head-face)
|
||||||
(if (zerop (user-uid)) "#" "$")
|
(if (zerop (user-uid)) "#" "$")
|
||||||
|
|
Loading…
Reference in New Issue