2012-02-02 154 views
3

我无法让emacs跳转到vhdl模式下的下一个错误,先前错误,第一个错误。Emacs VHDL跳转到错误

我使用FSF Emacs 23.3.1与最近的vhdl模式3.33.28在Ubuntu下。 我可以用的ModelSim编译和我得到的编译错误列表:

-- Loading package standard 
-- ... 
-- Compiling entity foo 
** Error: path/foo.vhd(22): (vcom-1136) Unknown identifier "std_olgic". 

我试着去适应错误的正则表达式(在编译器设置),将最简单的一个:

\*\* Error: \([a-zA-Z\/_.]*\)(\([0-9]*\)).* 

当我使用这种方式我可以看到它正确地分析错误:

sed "s/\*\* Error: \([a-zA-Z\/_.]*\)(\([0-9]*\)).*/\1 \2/" ... 
path/foo.vhd 22 

我改变分别为“文件subexp指数”和“行subexp指数”为1和2,但我仍然不能左右的误差跳。

+0

我认为这个特性在emacs23中不被支持,但是只有在emacs21中这个特性现在已经很老了。 – user1131562 2012-02-02 14:25:02

回答

1

在Emacs正则表达式中,您需要双重转义字符串中的父对象(explanation)。尝试是这样的:\*\* Error: \\([a-zA-Z0-9/_.]+\\)(\\([0-9]+\\)).*

+0

Thx的回复,但它仍然无法正常工作。无论我放入正则表达式,它看起来完全禁用。 – user1131562 2012-02-03 09:48:21

2

以下配置解决这个错误我

'(vhdl-compile-use-local-error-regexp t) 
(add-to-list 'compilation-error-regexp-alist '("** Error: \\(.+\\)(\\([0-9]*\\)):" 1 2)) 
0

对不起碰到一个老话题,但我只是碰到了这个问题,得到的东西的工作我出去。

下面是我用来获取设置它的工作:

正则表达式:

\(ERROR\|WARNING\|\*\* Error\|\*\* Warning\)[^:]*:\(*[[0-9]+]\)? \(.+\)(\([0-9]+\)): 

文件subexp指数:3

线subexp指数:4

VHDL编译使用本地错误正则表达式(在Vhdl编译组下):关闭

而这里“我的故事吧: http://www.velocityreviews.com/forums/t957495-emacs-vhdl-mode-next-error-previous-error-and-first-error-are-not-working.html

:P

希望这有助于!