Emacs के खोल में git ब्रांच को कैसे दिखाना है


2

मैं Emacs shellप्रॉम्प्ट के हिस्से के रूप में वर्तमान गिट शाखा कैसे दिखा सकता हूं ?

उदाहरण के लिए, मेरे पास यह है ~/.bash_profile(मैं मैक OSX 10.9 टर्मिनल पर हूं):

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
export PS1="\[\033[00m\]\u@\h\[\033[01;33m\] \w \[\033[31m\]\$(parse_git_branch)\[\033[00m\]$\[\033[00m\] "

जो इस तरह से एक अच्छी तरह से रंग का खोल खोल पैदा करता है:

name@my-computer ~/code/sample (master)$

मैं emacs के खोल में कुछ समान कैसे बना सकता हूं?

वर्तमान में जब मैं खोलूंगा M-x shellतो ऐसा खुलेगा:

bash: parse_git_branch: command not found
name@my-computer ~/code/sample $ 

जवाबों:


0

एक ही मुद्दा था, कुछ शोध के बाद इस रेपो को पाया और मेरे कोड को निम्न समाधान के लिए अपनाया:

शाखा नाम प्राप्त करें:

  (defun git-prompt-branch-name ()
    "Get current git branch name"
    (let ((args '("symbolic-ref" "HEAD" "--short")))
      (with-temp-buffer
        (apply #'process-file "git" nil (list t nil) nil args)
        (unless (bobp)
          (goto-char (point-min))
          (buffer-substring-no-properties (point) (line-end-position))))))

कस्टम प्रॉम्प्ट फ़ंक्शन:

  (defun 4lex1v:eshell-prompt ()
    (let ((branch-name (git-prompt-branch-name)))
      (concat
       "\n# " (user-login-name) " in " (abbreviate-file-name (eshell/pwd)) "\n"
       (if branch-name (format "git:(%s) >> " branch-name) ">> ")
       )))

कॉन्फ़िगर करें:

  (setq eshell-prompt-function #'4lex1v:eshell-prompt
        eshell-prompt-regexp ".*>>+ ")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.