GNU GLOBAL 대응 언어를 대폭 늘린 Pygments Parser 도입
6844 단어 GoJavaScriptglobalRubygtags
파이톤이 쓴 문법 고작자Pygments를 활용해 파이그먼트가 지원하는 다양한 프로그래밍 언어의 태그를 가능하게 한 것이다.
구체적으로 GLOBAL-6.3.2(2014년 9월 4일 출시)의 새로운 기능 GLOBAL의 저자가 쓴 것처럼 기호 라벨만 검색할 수 있는 25가지 내용을 포함한다면 150개 언어에 대응해야 한다.
개인적으로는 루비, 고, 자바스크립트 등을 표시하는 데 쓰인다.
이런 Pygments Parer, GLOBAL의 플러그인 Parer의 설정 자체가 어렵고 Pygments Parer도 일부 소프트웨어에 의존하기 때문에 가져오는 방법이 이해하기 어려울 것 같습니다.따라서 Pygments Parer의 가져오기 방법에 대해 설명하고 싶습니다.
Exubrant Ctags 활용
신속하게 설치하기 전에 약간의 예비 지식이 필요하다.
gtags에서 생성된 탭에는 정의 탭과 기호 탭이 있습니다.인용 라벨은 좀 특수해서 전문적인 참고 라벨 인덱스가 없습니다.1
기호 태그는 Pygments만 생성할 수 있습니다.기호 태그만 점프할 수 있지만 정의와 참조도 모두 기호입니다.
정의 라벨과 참고 라벨을 구분하는 것이 가장 좋다.따라서 Pygments Parser가 설치되었을 때Exuberant Ctags Exuberant Ctags를 사용하여 정의 태그를 생성합니다.
Pygments와 ctags 두 출력을 조합하여 정의, 참조, 기호의 모든 종류의 표기 점프를 이용할 수 있습니다.
또한 Exubrant Ctags에서 지원하지 않는 언어에는 기호 태그만 생성됩니다.
설치하다.
Mac의 경우
Mac에서 Homebrew를 사용하는 것은 매우 간단합니다.$ brew install global --with-exuberant-ctags --with-pygments
이렇게 하면 Pygments의 포장과 Exubrant Ctags도 자동으로 설치됩니다.
Unix 시스템 OS의 경우
필요한 물건
Mac의 경우
Mac에서 Homebrew를 사용하는 것은 매우 간단합니다.
$ brew install global --with-exuberant-ctags --with-pygments
이렇게 하면 Pygments의 포장과 Exubrant Ctags도 자동으로 설치됩니다.Unix 시스템 OS의 경우
필요한 물건
Pygments 파이톤 포장(1.6이하 추천)
Exuberant Ctags 5.5 이후
설치하다.
Pygments 패키지를 설치합니다.
$ sudo pip install Pygments
Exubrant Ctags를 설치합니다.나는 대부분의 발행에 포장이 있다고 생각한다.
Ubuntu Linux의 경우 다음과 같습니다.
$ sudo apt-get install exuberant-ctags
GNU GLOBAL을 설치합니다.http://www.gnu.org/software/global/download.html から最新の global-x.x.x.tar.gz をダウンロード
$ tar xf global-x.x.x.tar.gz
$ cd global-x.x.x
$ ./configure
$ make
$ sudo make install
또한 ./configure를 실행할 때python의 실행 파일을 정확하게 찾으면checking for python... /usr/bin/python
이런 로그에서 동작의 실행 파일을 정확하게 찾을 수 있다면checking for exuberant ctags program... using /usr/bin/ctags
의 로그가 출력됩니다.시험해 보다
태그 정보
GNU GLOBAL이 설치된 기본 상태에서 내장 필터가 작동합니다.
내장 서버는 C/C++, Java, PHP 등의 제한된 언어만 지원합니다.
플러그인 파서를 사용하려면 gtags를 실행할 때 '탭' 을 지정하고 사용하고자 하는 파서를 표시해야 합니다.$ gtags --gtagslabel=pygments
# 環境変数で指定することもできます
$ export GTAGSLABEL=pygments
$ gtags
탭으로 지정할 수 있는 것은/usr/local/etc/gtags/gtags입니다.conf2에 정의된 다음 항목입니다.default:\
:tc=native:
native:\
:tc=gtags:tc=htags:
user:\
:tc=user-custom:tc=htags:
ctags:\
:tc=exuberant-ctags:tc=htags:
pygments:\
:tc=pygments-parser:tc=htags:
아무것도 지정하지 않으면 지정한 것이다default.
Pygments 서버를 사용할 때는 레이블pygments을 지정합니다.
또한 이 파일tc=은 다른 정의를 즉석에서 읽는다는 뜻이다.
실행 예
$ cat hello.rb
class Hello
def hello
puts message
end
def message; 'hello, world'; end
end
$ gtags --gtagslabel=pygments
$ global -x message hello.rb
message 6 hello.rb def message; 'hello, world'; end
$ global -rx message hello.rb
message 3 hello.rb puts message
정의 및 참조 태그를 각각 검색할 수 있습니다.
문제 해결
플러그인 서버가 호출되었는지 확인
gtags에서 --debug 옵션을 제공하여 대상 파일이 플러그인 서버로 호출되었는지 확인할 수 있습니다.$ gtags --debug
.....
File './hello.rb' is handled as follows:
suffix: |.rb|
language: |Ruby|
parser: |parser|
library: |/usr/local/lib/gtags/pygments-parser.la|
.....
확장자.rb 중 hello.rb는 루비 언어로 판단되어 pygments-parser라고 불린다.
원하는 플러그인 서버가 호출되지 않았다면
$ gtags --gtagslabel=pygments
# 環境変数で指定することもできます
$ export GTAGSLABEL=pygments
$ gtags
default:\
:tc=native:
native:\
:tc=gtags:tc=htags:
user:\
:tc=user-custom:tc=htags:
ctags:\
:tc=exuberant-ctags:tc=htags:
pygments:\
:tc=pygments-parser:tc=htags:
$ cat hello.rb
class Hello
def hello
puts message
end
def message; 'hello, world'; end
end
$ gtags --gtagslabel=pygments
$ global -x message hello.rb
message 6 hello.rb def message; 'hello, world'; end
$ global -rx message hello.rb
message 3 hello.rb puts message
플러그인 서버가 호출되었는지 확인
gtags에서 --debug 옵션을 제공하여 대상 파일이 플러그인 서버로 호출되었는지 확인할 수 있습니다.$ gtags --debug
.....
File './hello.rb' is handled as follows:
suffix: |.rb|
language: |Ruby|
parser: |parser|
library: |/usr/local/lib/gtags/pygments-parser.la|
.....
확장자.rb 중 hello.rb는 루비 언어로 판단되어 pygments-parser라고 불린다.원하는 플러그인 서버가 호출되지 않았다면
태그 생성 확인
gtags에서는 -d 옵션과 레이블 파일 이름을 사용하여 레이블 파일의 내용을 덤프할 수 있습니다.$ gtags -d GTAGS
__.COMPNAME __.COMPNAME
__.COMPRESS __.COMPRESS ddefine ttypedef
__.VERSION __.VERSION 6
Hello 1 @n 1 class @n
hello 1 @n 2 def @n
message 1 @n 6 def @n; 'hello, world'; end
$ gtags -d GRTAGS
__.COMPACT __.COMPACT
__.COMPLINE __.COMPLINE
__.COMPNAME __.COMPNAME
__.VERSION __.VERSION 6
Hello 1 @n 9
h 1 @n 9-1
hello 1 @n 10
message 1 @n 3
new 1 @n 9
puts 1 @n 3
처음 몇 줄은 관리 데이터이고, 다음 줄마다 시작하는 필드는 표시입니다.GTAGS에는 정의 라벨이 있고, GRTAGS에는 기호 라벨이 있다.GTAGS, GRTAGS 각각 원하는 태그가 생성되었는지 확인합니다.GTAGS의 라벨이 생성되지 않은 경우) 동작 장치를 설치했습니까?Tips
내장 추진기와 병용하다
Pygments Parer 속도가 느리므로 내부 프로세서에 해당하는 파일을 내부 프로세서로 설정하고 나머지는 Pygments Parer로 처리하는 것이 좋습니다.
또한 환경 변수GTAGSLABEL나 --gtagslabel 옵션을 설정하지 않아도 Pygments Parer가 작동합니다.
설정 파일을 ~/.globalrc 이름으로 복사합니다.$ cp /usr/local/etc/gtags/gtags.conf ~/.globalrc # gtags.conf の場所は環境により読み替えてください
편집~/.globalrc.default:\
:tc=native:
↓
default:\
:tc=native:tc=pygments:
이렇게 하면 환경 변수인 GTAGSLABEL 또는 --gtagslabel 옵션을 설정하지 않아도 Pygments Parer가 작동합니다.
또한 내부 장치를 처리할 수 있는 파일의 경우 내부 장치가 우선적으로 사용됩니다.
끝말
정확성이 부족하고 속도가 느리다는 단점도 있지만, 한 번만 설정하면 많은 언어에 대응할 수 있는 피그먼트 파어는 GNU GLOBAL 이용자들에게 편리할 것으로 보인다.
사용 후의 피드백을 받을 수 있다면 정말 좋겠다.
인용 탭은 기호 탭과 정의 탭에서 내보냅니다.기호 태그에서 정의 태그에도 동일한 식별자가 있는 태그는 참조 태그입니다. ↩
환경에 따라 경로를 다시 읽으십시오.Mac의 Homebrew/usr/local/etc/gtags/gtags.conf에서 Linux는 대부분 /usr/local/share/gtags/gtags.conf이다. ↩
Reference
이 문제에 관하여(GNU GLOBAL 대응 언어를 대폭 늘린 Pygments Parser 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yoshizow/items/9cc0236ac0249e0638ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ cp /usr/local/etc/gtags/gtags.conf ~/.globalrc # gtags.conf の場所は環境により読み替えてください
default:\
:tc=native:
↓
default:\
:tc=native:tc=pygments:
정확성이 부족하고 속도가 느리다는 단점도 있지만, 한 번만 설정하면 많은 언어에 대응할 수 있는 피그먼트 파어는 GNU GLOBAL 이용자들에게 편리할 것으로 보인다.
사용 후의 피드백을 받을 수 있다면 정말 좋겠다.
인용 탭은 기호 탭과 정의 탭에서 내보냅니다.기호 태그에서 정의 태그에도 동일한 식별자가 있는 태그는 참조 태그입니다. ↩
환경에 따라 경로를 다시 읽으십시오.Mac의 Homebrew
/usr/local/etc/gtags/gtags.conf에서 Linux는 대부분 /usr/local/share/gtags/gtags.conf이다. ↩ Reference
이 문제에 관하여(GNU GLOBAL 대응 언어를 대폭 늘린 Pygments Parser 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshizow/items/9cc0236ac0249e0638ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)