2012-02-18 7 views
3

나는 Verilog & 시스템 Verilog 코딩 및 코드 브라우징에 대한 exuberant ctags 및 emacs를 최근 사용하기 시작했습니다. 나는 현재` ".vh"& ".svh"모든 확장자를 가진 특정 헤더 파일에 지정된 매크로를 정의어떻게 emacs와 exuberant ctags를 사용하는 동안 Verilog 언어에 대한 헤더 파일을 사용

ctags -e -R --tag-relative=yes --langmap=verilog:.v.vh.sv.svh 

내 코드가 많이 들어있는 명령을 사용하여 태그를 생성합니다. 예 : foo.vh라는 이름의 헤더 파일에 다음 코드

`define WIDTH_ADDRESS 32; 

및 파일 top.v을 가지고 사용 top.v 파일을 검색하는 중에

input [`WIDTH_ADDRESS - 1 : 0] InAddress; 

을 다음과 같이 매크로를 호출 이맥스, foo.vh 파일의 매크로 정의로 직접 이동할 수있는 방법이 있습니까?

지금은 M-x tags-search <RET> WIDTH_ADDRESS <RET>을 사용하고 있지만, foo.vh 파일에 도달하기 전에 다른 파일의`WIDTH_ADDRESS '인스턴스의 상당수로 건너 뜁니다.

약간의 연구 끝에 태그 생성 중에 ctags와 함께 -h 옵션을 사용하여 헤더 파일을 지정하는 옵션을 보았습니다. 그러나 나는 그것을 작동시키지 못했고 내 생각에는 구문 오류가 있었다고 생각합니다.

먼저 -h 옵션을 사용하여 헤더 파일을 지정하면 어떤 이점이 있습니까? 그렇다면 헤더 파일을 지정하는 올바른 구문은 무엇입니까? 또한 나는 (".V"확장자를 가진 & ".sv") 다른 파일을 구문 분석하기 전에 먼저 이러한 헤더 파일에

답변

1

구문에 대한을 (확장자를 가진 파일을 ".vh"& ".svh")보고 이맥스를 지정할 수 있습니다 -h 옵션이 -h .vh.svh

왜 나는 ctags가`WIDTH_ADDRESS macro invocations '를 선택하는지 모르겠습니다. WIDTH_ADDRESS가`여러 번 정의 된 경우, 모든 정의를 선택해야하지만 호출은 선택하지 않아야합니다. 어쩌면 Verilog 플러그인 문제 일 수도 있습니다. 언제든지 태그 파일을 편집하고 원하지 않는 항목을 삭제할 수 있습니다. 이것은 sed 또는 perl 스크립트로하기 쉽습니다.