2013-04-28 36 views
2

我用下面的提示對我的Emacs的外殼:如何獲得dirtrack模式,有色,多線工作的提示

PS1='\n\[\e[33m\]\w\033[36m\]$(parse_git_branch)\[\033[00m\]\n$ ' 

輸出看起來是這樣的:

Emacs prompt

我試着使用正則表達式"(^[^\\(]*)"來匹配路徑並將其設置在dirtrack-list中:

(setq-default dirtrack-list '("(^[^\\(]*)" 1 1)) 

但由於顏色,外殼永遠不會匹配(所以它不能跟蹤我的cwd)。是否可以擴展我的正則表達式以包含顏色?


包括@ tripleee的正則表達式的作品:

(setq-default dirtrack-list '("\\s-\\(\033\\[[0-9]+m\\)*\\([^\033\\(]+\\)" 2 1)) 

但現在當我cd我隨機得到以下錯誤在*Warnings*緩衝區:

Warning (emacs): 
/does not exist 

回答

1

問題來自rvm部分。當您在該特定存儲庫中使用cd時,它會自動吐出一行,告訴您它正在使用gemset。正則表達式不足以消除這種誤報。我相信下面的正則表達式應該可以工作:"\\s-\\(\033\\[[0-9]+m\\)\\([^\033\\(]+\\)"

1

試着這麼做"^\\(\033\\[[0-9]+m\\)*\\([^\033\\(]+\\)"和搶第二個捕獲組而不是第一個。

+0

謝謝,這工作,但現在我隨機得到: '警告(Emacs的):目錄 /不exist' 在'*警告*'緩衝區。如果我reverx正則表達式一切正常,任何想法? – 2013-04-28 14:32:05

1

tracking.el什麼也沒有引發警告。我用下面的.emacs,試圖重現該問題,並沒有什麼錯:

(add-hook 'shell-mode-hook 
     (lambda() 
      (shell-dirtrack-mode -1) 
      (dirtrack-mode 1))) 

(add-hook 'dirtrack-directory-change-hook 
      (lambda() 
      (message default-directory))) 

(setq-default dirtrack-list '("\\s-\\(\033\\[[0-9]+m\\)*\\([^\033\\(]+\\)" 2 1)) 

什麼操作系統和您使用的是什麼版本的Emacs的?

+0

我在Mac OS 10.8.3上使用Emacs 23.3.50(9.0)。我創建了一個小視頻,我認爲這個視頻最能說明問題:https://www.youtube.com/watch?v=GsVXdAM93L8 – 2013-05-01 04:48:25

相關問題