macOS에 emacs ggtags 설치 및 설정
ProgrammingmacOS에 emacs ggtags 설치 및 설정하는 과정을 정리한다. 성공한 환경은 아래와 같다.
- macOS Version: macOS Sierra 10.12.6 (16G29)
- emacs Version: GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Version 10.9.5 (Build 13F1911)) of 2016-09-21
1. 설치
1.1 Homebrew로 ruby, ctags 설치
brew install --upgrade ruby
brew install --HEAD ctags
1.2 Homebrew로 GNU Global 설치
brew install global --with-exuberant-ctags
1.3 pygments 플러그인 설치
sudo pip install pygments
sudo pip3 install pygments
pygments는 Syntax Highlighter이다. ctags가 레퍼런스 탐색 기능을 제공하지 않기 때문에 Global에서 pygments 플러그인을 사용하도록 설정해 주어야 한다.
2. 설정
2.1 pygments 설정
시스템 환경 변수(.bashrc 등)에 아래와 같이 설정해준다.
export GTAGSCONF=~/.globalrc
export GTAGSLABEL=pygments
즉, Emacs에는 아래와 같이 해주면 된다.
(setenv "GTAGSCONF" (concat (expand-file-name "~") "./globalrc"))
(setenv "GTAGSLABEL" "pygments")
만일 ~/.globalrc 파일이 없다면, /usr/local/share/gtags/gtags.conf 파일을 복사하여 ~/.globalrc 로 만든다. 그리고 :ctagscom= 을 검색하여 아래와 같이 바꿔준다(2개 정도 나옴).
exuberant-ctags|plugin-example|setting to use Exuberant Ctags plug-in parser:\
:tc=common:\
:ctagscom=/usr/local/opt/ctags/bin/ctags:\
...
pygments-parser|Pygments plug-in parser:\
:ctagscom=/usr/local/opt/ctags/bin/ctags:\
2.2 Emacs 설정
(and
(require 'ggtags nil t)
(message "ggtags initializing...")
(autoload 'ggtags-mode "ggtags"
"Minor mode for browsing source code using GLOBAL" t))
(eval-after-load 'ggtags
'(progn
(add-hook 'c-mode-common-hook
(lambda ()
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'objc-mode)
(ggtags-mode 1))))
(add-hook 'python-mode-hook (lambda () (ggtags-mode 1)))
;; Set GTAGS variables
(setenv "GTAGSCONF" (concat (expand-file-name "~") "/.globalrc"))
(setenv "GTAGSLABEL" "pygments")
(define-key ggtags-mode-map (kbd "C-c C-f") 'ggtags-find-file)
(define-key ggtags-mode-map (kbd "C-c g") 'ggtags-grep)
))
(provide 'koodev-ggtags)
3. 실행
프로젝트 폴더로 가서 소스파일을 하나 열고 M-x ggtags-find-tags-dwim 을 실행하면 루트 폴더의 위치를 묻는데, 프로젝트 루트를 지정해주면 잠시 후 G* 파일들이 생성된다.
단축키 등의 자세한 정보는 다음 링크를 참고한다: https://github.com/leoliu/ggtags
4. 기타
ImportError: No module named pygments 이런 에러가 뜨는 경우, 우선은 pygments 플러그인을 잘 설치했나 확인해보고, 실행 환경에서 python이 어느 경로로 잡혀있는지 확인해본다. 내 경우에는 시스템에 python이 두 개가 설치되어 있었는데, 터미널을 열 경우와 Emacs나 다른 유틸(GNU Global)을 실행하는 시점에서 python 경로가 달라 위와 같은 에러가 떴다. 추가로 설치된 python을 삭제하고 pygments 등을 재설치해 주었더니 문제가 해결되었다.
References
'Programming' 카테고리의 다른 글
Regular expression in sed (0) | 2018.04.25 |
---|---|
How to terminate a background process (0) | 2018.04.24 |
Xcode에 assimp 올리기 (0) | 2017.06.06 |
OpenGL로 원 그리기 (1) | 2017.05.27 |
Swift3 - result unused warning 없애기 (0) | 2017.05.23 |