기술적으로 파일의 태그를보기 위해 vim에서 Tagbar을 사용하고 있지만,이 질문은 일반적인 ctags 인 v5.8에 일반적으로 적용됩니다.무한한 ctags에서`--regex-<LANG>`으로 생성 된 태그에 범위 정보를 추가 할 수 있습니까?
한다고 가정 나는 다음과 같은 파이썬 파일을 가지고, 그것을 foo.py
전화 :
class foo:
def bar(baz):
print(baz)
이의 그것에
ctags
을 실행하자 :
ctags foo.py
합니다. 그 결과
tags
파일은 다음과 같습니다 : 내가 관심이
!_ some ctags version/formatting stuff not worth pasting
bar foo.py /^ def bar(baz):$/;" m class:foo
foo foo.py /^class foo:$/;" c
비트는 두 번째 줄, class:foo
의 마지막 필드입니다. 이것이 bar()
함수의 범위입니다. vim에서 tagbar를 사용하면 그에 따라 클래스의 함수가 중첩됩니다.
이제 새로운 언어에 대한 지원을 내 ~/.ctags
에 추가한다고 가정합니다. 사실,이 꼭두각시 파일에 대한 지원을 추가 해요 :
class foo {
include bar
}
은 가정하자 나는 다음과 같은 ~/.ctags
인수를 사용합니다. '수입'정규식 (... errr 정규식에 대한 추한) 추한이지만이 예를 들어 충분히 수행 할 작업 가져옵니다
bar foo.pp /^ include bar$/;" i
foo foo.pp /^class foo {$/;" c
: 내
tags
파일에 다음과 같은 태그를 생성
--langdef=puppet
--langmap=puppet:.pp
--regex-puppet=/^class[ \t]*([:a-zA-Z0-9_\-]+)[ \t]*/\1/c,class,classes/
--regex-puppet=/^\ \ \ \ include[ \t]*([:a-zA-Z0-9_\-]+)/\1/i,include,includes/
을
두 줄 모두 범위 지정 정보가 없습니다. 제 질문은 이것입니다 : 어쨌든 --regex-puppet
인수를 구성하거나 일반적으로 --regex-<LANG>
행을 구성하여 태그의 범위에 대한 정보를 수집합니까? 아마도 기준 A를 충족하는 태그가 기준 B를 충족하는 태그의 범위 - 부모가 될 것이라고 선언할까요?
man ctags
--regex-<LANG>=/regexp/replacement/[kind-spec/][flags]
Unless modified by flags, regexp is interpreted as a Posix extended regular expression. The replacement should expand for all matching lines to a non-empty string of
characters, or a warning message will be reported. An optional kind specifier for tags matching regexp may follow replacement, which will determine what kind of tag is
reported in the "kind" extension field (see TAG FILE FORMAT, below). The full form of kind-spec is in the form of a single letter, a comma, a name (without spaces), a
comma, a description, followed by a separator, which specify the short and long forms of the kind value and its textual description (displayed using --list-kinds). Either
the kind name and/or the description may be omitted. If kind-spec is omitted, it defaults to "r,regex". Finally, flags are one or more single-letter characters having the
following effect upon the interpretation of regexp:
b The pattern is interpreted as a Posix basic regular expression.
e The pattern is interpreted as a Posix extended regular expression (default).
i The regular expression is to be applied in a case-insensitive manner.