Emacs VHDL跳转到错误

时间:2012-02-02 10:18:55

标签: emacs vhdl

我无法让emacs在vhdl模式下跳转到下一个错误,上一个错误,第一个错误。

我正在使用FSF Emacs 23.3.1以及ubuntu下最近的vhdl-mode 3.33.28。 我可以用Modelsim编译,我得到编译器错误列表:

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

我尝试将错误regexp(在编译器设置中)改编为最简单的一个:

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

当我以这种方式使用它时,我可以看到它正确解析错误:

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

我将“文件子表达式索引”和“行子表达式索引”分别更改为1和2,但仍然无法跳转错误。

3 个答案:

答案 0 :(得分:2)

以下配置为我解决了这个错误

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

答案 1 :(得分:1)

在Emacs regexp中,您需要在字符串(explanation)中双重转义parens。尝试这样的事情:\*\* Error: \\([a-zA-Z0-9/_.]+\\)(\\([0-9]+\\)).*

答案 2 :(得分:0)

很抱歉碰到一个老话题,但我刚遇到这个问题并为我解决了问题。

以下是我用来使其工作的设置:

Regexp:

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

文件subexp index:3

Line subexp index:4

Vhdl编译使用本地错误Regexp(在Vhdl编译组下):关闭

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

:P

希望这有帮助!