Last active
December 15, 2015 17:49
-
-
Save sluchin/5299599 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; GNU Global | |
;; wget http://tamacom.com/global/global-6.2.8.tar.gz | |
(when (and (executable-find "global") | |
(locate-library "gtags")) | |
(autoload 'gtags-mode "gtags" "Gtags facility for Emacs." t) | |
(add-hook 'gtags-select-mode-hook | |
(lambda () | |
(when (fboundp 'hl-line-mode) ; 強調表示 | |
(hl-line-mode 1)))) | |
(let ((hook (lambda () | |
(when (fboundp 'gtags-mode) ; gtags-mode | |
(gtags-mode 1)) | |
(when (fboundp 'set-gtags-libpath) ; パス設定 | |
(set-gtags-libpath))))) | |
(add-hook 'c-mode-common-hook hook) ; C, C++ | |
(add-hook 'java-mode-hook hook)) ; Java | |
(eval-after-load "gtags" | |
'(progn | |
;; ローカルバッファ変数 | |
(defvar gtags-libpath nil "Library directory of language.") | |
(make-variable-buffer-local 'gtags-libpath) | |
;; ローカルバッファ変数にパスを設定する関数定義 | |
(defun set-gtags-libpath () | |
(let (path-string | |
(dirs (cond | |
((eq major-mode 'c-mode) | |
'("/usr/src/linux-source-3.2.0" | |
"/usr/include")) | |
((eq major-mode 'c++-mode) | |
'("/usr/include"))))) | |
(dolist (dir dirs) | |
(if (file-readable-p (concat (file-name-as-directory dir) "GTAGS")) | |
(setq path-string (concat path-string dir ":")) | |
(message "GTAGS does't exist: %s" dir))) | |
(if (and (boundp 'gtags-libpath) path-string) | |
(setq gtags-libpath (substring path-string 0 -1))) | |
(message "gtags-libpath: %s" gtags-libpath))) | |
;; 環境変数の設定 | |
(defadvice gtags-goto-tag | |
(before setenv-gtags-libpath activate) | |
(setenv "GTAGSLIBPATH" gtags-libpath) | |
(message "GTAGSLIBPATH: %s" (getenv "GTAGSLIBPATH"))) | |
;; パスの表示形式 | |
(when (boundp 'gtags-path-style) | |
(setq gtags-path-style 'absolute)) | |
;; ポップ時バッファ削除 | |
(when (boundp 'gtags-pop-delete) | |
(setq gtags-pop-delete t)) | |
;; 選択バッファを一段階のみ有効 | |
(when (boundp 'gtags-select-buffer-single) | |
(setq gtags-select-buffer-single t)) | |
;; キーバインド | |
;; 定義タグ検索 | |
(define-key gtags-mode-map (kbd "C-c g d") 'gtags-find-tag) | |
;; 参照タグ検索 | |
(define-key gtags-mode-map (kbd "C-c g r") 'gtags-find-rtag) | |
;; シンボル一覧表示 | |
(define-key gtags-mode-map (kbd "C-c g s") 'gtags-find-symbol) | |
;; grep 検索 | |
(define-key gtags-mode-map (kbd "C-c g g") 'gtags-find-with-grep) | |
;; POSIX 正規表現検索 | |
(define-key gtags-mode-map (kbd "C-c g p") 'gtags-find-pattern) | |
;; パス名検索 | |
(define-key gtags-mode-map (kbd "C-c g P") 'gtags-find-file) | |
;; ファイルの定義タグ検索 | |
(define-key gtags-mode-map (kbd "C-c g f") 'gtags-parse-file) | |
;; コンテキスト検索 | |
(define-key gtags-mode-map (kbd "C-]") 'gtags-find-tag-from-here) | |
;; タグスタックをポップ | |
(define-key gtags-mode-map (kbd "C-t") 'gtags-pop-stack) | |
;; 一覧表示のキーバインド | |
(define-key gtags-select-mode-map "p" 'previous-line) | |
(define-key gtags-select-mode-map "n" 'next-line) | |
(define-key gtags-select-mode-map "q" 'gtags-pop-stack)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment