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.)