2013-04-28 53 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

相关问题