emacs 코드 탐색+점프

반년 이 넘 게 고생 했 으 니,마침내 비교적 적합 한 방법 을 찾 은 셈 이다.
제 선택 은 cedet+ecb+global 입 니 다.
gnu-global 은 tag 를 호 환 하 는 도구 로 이름 을 보면 어떻게 일 을 할 계획 인지 알 수 있 습 니 다.gtags 는 emacs 에서 global 과 상호작용 하 는 플러그 인 입 니 다.
먼저 위의 세 개의 소스 코드 를 다운로드 하 세 요.global 은 gtags 입 니 다.
cedet 홈 페이지http://cedet.sourceforge.net/
ecb 홈 페이지http://ecb.sourceforge.net/
그리고 ubuntu 에서 sudo apt-get install 로 온 global 을 사용 하지 마 십시오.버 전 문 제 는 gtags 를 다운로드 하 는 것 과 호 환 되 지 않 을 수 있 습 니 다.매개 변 수 는 인식 되 지 않 습 니 다.
다운로드 주소http://www.gnu.org/s/global/download.html
다운로드 후 압축 해제,$./configure 
$make 
$sudo make install 
그리고 소스 패키지 에 gtags.el 이 있 습 니 다.저희 emacs 플러그 인 입 니 다.
cedet,ecb,gtags 플러그 인 을 플러그 인 을 저장 하 는 위치 에 놓 으 십시오.제 것 은~/emacs/아래 에 있 습 니 다.그리고 모든 플러그 인 은 자신의 디 렉 터 리 가 있 습 니 다.
;;  cedet
(add-to-list 'load-path "~/emacs/cedet-1.0pre7/common")
(add-to-list 'load-path "~/emacs/cedet-1.0pre7/contrib")
;;(load-file "~/emacs/cedet-1.0pre7/common/cedet.el")
(require 'cedet)
(require 'semantic-ia)
(global-ede-mode 1)                      ; Enable the Project management system
(semantic-load-enable-code-helpers)      ; Enable prototype help and smart completion 
(global-srecode-minor-mode 1)            ; Enable template insertion menu
(require 'semantic-tag-folding nil 'noerror)
(global-semantic-tag-folding-mode 1)
(global-set-key [f12] 'semantic-ia-fast-jump)
(global-set-key [S-f12]
                (lambda ()
                  (interactive)
                  (if (ring-empty-p (oref semantic-mru-bookmark-ring ring))
                      (error "Semantic Bookmark ring is currently empty"))
                  (let* ((ring (oref semantic-mru-bookmark-ring ring))
                         (alist (semantic-mrub-ring-to-assoc-list ring))
                         (first (cdr (car alist))))
                    (if (semantic-equivalent-tag-p (oref first tag)
                                                   (semantic-current-tag))
                        (setq first (cdr (car (cdr alist)))))
                    (semantic-mrub-switch-tags first))))
;(define-key c-mode-map [M-S-f12] 'semantic-analyze-proto-impl-toggle)
(global-set-key (kbd "M-q") 'semantic-ia-complete-symbol-menu)
(define-key semantic-tag-folding-mode-map (kbd "C-c , -") 'semantic-tag-folding-fold-block)
(define-key semantic-tag-folding-mode-map (kbd "C-c , +") 'semantic-tag-folding-show-block)
(define-key semantic-tag-folding-mode-map (kbd "C-_") 'semantic-tag-folding-fold-all)
(define-key semantic-tag-folding-mode-map (kbd "C-+") 'semantic-tag-folding-show-all)


;; (setq semanticdb-project-roots (list (expand-file-name "/")))
(defconst cedet-user-include-dirs
  (list 
   "/home/backfire/work/android/kernel/include"
   "/home/backfire/work/android/kernel/arch/arm/include"
   "/home/backfire/work/android/kernel/arch/arm/mach-XXX/include"
   ""))
;; (defconst cedet-win32-include-dirs
;;   (list "C:/MinGW/include"
;;         "C:/MinGW/include/c++/3.4.5"
;;         "C:/MinGW/include/c++/3.4.5/mingw32"
;;         "C:/MinGW/include/c++/3.4.5/backward"
;;         "C:/MinGW/lib/gcc/mingw32/3.4.5/include"
;;         "C:/Program Files/Microsoft Visual Studio/VC98/MFC/Include"))
(require 'semantic-c nil 'noerror)
(let ((include-dirs cedet-user-include-dirs))
  ;; (when (eq system-type 'windows-nt)
  ;;   (setq include-dirs (append include-dirs cedet-win32-include-dirs)))
  (mapc (lambda (dir)
          (semantic-add-system-include dir 'c++-mode)
          (semantic-add-system-include dir 'c-mode))
        include-dirs))

기본적으로
Meteor Liu 의 설정 입 니 다.
F12 쾌속 점프,shift+F12 점프.이것 은 그다지 좋 지 않다.일반적으로 나 는 단지 본문 에서 내 면 으로 뛰 어 넘 어 채택 할 뿐이다.
그리고 코드 접 기 설정 입 니 다.마 우 스 를 사용 하지 않 으 려 면 볼 수 있 습 니 다.
include 경 로 는 보완 용 입 니 다.저 는 M-q 를 사용 하지만 ac+gtags 를 사용 할 때 가 많 습 니 다.이 대부분의 시간 은 방치 되 어 있다.
그리고 ecb 를 설정 합 니 다.이것 은 창 을 구분 하 는 id 와 유사 한 부품 입 니 다.주로 tag-list 와 유사 한 기능 을 사용 합 니 다.다른 것 은 거의 사용 되 지 않 습 니 다.
;;  ecb
(add-to-list 'load-path "~/emacs/ecb-2.40")
(require 'ecb)
;;      
(setq ecb-tip-of-the-day nil)

;;       
(global-set-key [C-left] 'windmove-left)
(global-set-key [C-right] 'windmove-right)
(global-set-key [C-up] 'windmove-up)
(global-set-key [C-down] 'windmove-down)
 
;;      ecb  
(define-key global-map [(control f1)] 'ecb-hide-ecb-windows)
(define-key global-map [(control f2)] 'ecb-show-ecb-windows)
 
;;    ecb     
;(define-key global-map "/C-c1" 'ecb-maximize-window-directories)
;(define-key global-map "/C-c2" 'ecb-maximize-window-sources)
;(define-key global-map "/C-c3" 'ecb-maximize-window-methods)
;(define-key global-map "/C-c4" 'ecb-maximize-window-history)
;;         
;(define-key global-map "/C-c`" 'ecb-restore-default-window-sizes)

ctrl 에 화살 표를 넣 고 각 창 사 이 를 이동 합 니 다.다른 단축 키 는 습관 적 으로 누 르 고 필요 하지 않 으 면 보지 마 세 요.
그리고 몇 가지 자주 사용 하 는 설정 을 말 합 니 다.왼쪽 창의 기본 폭 을 조정 할 수 있 습 니 다.분 리 된 스타일 을 설정 할 수 있 습 니 다.구체 적 인 설정 은 ecb 의 매 뉴 얼 을 보 셔 야 합 니 다.
강제 적 입 니 다.그렇지 않 으 면 ecb 가 좋 지 않다 고 생각 할 것 입 니 다.ecb 도움말 을 보고 먼저 ecb 를 시작 한 다음 에 M-x ecb-show-help 를 시작 합 니 다.ecb info 가 열 립 니 다.
전역 설정
;;  gtags
(add-to-list 'load-path "~/emacs/global")
;(autoload 'gtags-mode "gtags" "" t)
;(setq c-mode-hook '(lambda ()
;		     (gtags-mode 1)))
(global-set-key (kbd "C-c g f") 'gtags-find-tag)
(global-set-key (kbd "C-c g p") 'gtags-pop-stack)
(global-set-key (kbd "C-c g s") 'gtags-select-tag)

이것 도 매 뉴 얼 을 보 는 것 을 추천 합 니 다.gtags 를 먼저 시작 하고 cedet 를 시작 하 는 semantic 가 충돌 할 수 있 기 때문에 제 gtags-mode 는 모두 수 동 으로 시작 합 니 다.gtags-mode 라 는 명령 을 편안 한 버튼 에 묶 습 니 다.
그리고 제 가 자주 사용 하 는 단축 키 세 개...
C-c g f  tag,
C-c g p  ,
C-c g s,  tags     tags,       ,       emacs       ,       。


gtags ac      ,   ,       ,        。



android 。





좋은 웹페이지 즐겨찾기