forked from redguardtoo/emacs.d
-
Notifications
You must be signed in to change notification settings - Fork 0
/
init-cedet.el
89 lines (77 loc) · 3.52 KB
/
init-cedet.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/cedet-1.0.1/common"))
(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/cedet-1.0.1/contrib"))
(require 'cedet)
(semantic-load-enable-minimum-features)
(semantic-load-enable-code-helpers)
;(semantic-load-enable-guady-code-helpers)
(semantic-load-enable-excessive-code-helpers)
(semantic-load-enable-semantic-debugging-helpers)
(defconst cedet-user-include-dirs
(list ".." "../include" "../inc" "../common" "../public"
"../.." "../../include" "../../inc" "../../common" "../../public"))
;(defconst cedet-sys-include-dirs
; (list "" "../../public"))
(require 'semantic-c)
(require 'semantic-gcc)
(require 'semantic-ia)
(let ((include-dirs cedet-user-include-dirs))
(mapc (lambda (dir)
(semantic-add-system-include dir 'c++-mode)
(semantic-add-system-include dir 'c-mode))
include-dirs))
(defun semantic-ia-fast-jump-back ()
(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-visit first)
(ring-remove ring 0)))
(defun semantic-ia-fast-jump-or-back (&optional back)
(interactive "P")
(if back
(semantic-ia-fast-jump-back)
(semantic-ia-fast-jump (point))))
(defun semantic-ia-fast-jump-mouse (ev)
"semantic-ia-fast-jump with a mouse click. EV is the mouse event."
(interactive "e")
(mouse-set-point ev)
(semantic-ia-fast-jump (point)))
;(global-set-key [f12] 'semantic-ia-fast-jump-or-back)
;(global-set-key [f12] 'semantic-ia-fast-jump)
(define-key c-mode-base-map (kbd "M-n") 'semantic-ia-complete-symbol-menu)
;to use ede
(global-ede-mode t)
;switch .h file with .cpp file
(require 'eassist nil 'noerror)
(define-key c-mode-base-map [M-f12] 'eassist-switch-h-cpp) ;define the shutcut key
(setq eassist-header-switches
'(("h" . ("cpp" "cxx" "c++" "CC" "cc" "C" "c" "mm" "m"))
("hh" . ("cc" "CC" "cpp" "cxx" "c++" "C"))
("hpp" . ("cpp" "cxx" "c++" "cc" "CC" "C"))
("hxx" . ("cxx" "cpp" "c++" "cc" "CC" "C"))
("h++" . ("c++" "cpp" "cxx" "cc" "CC" "C"))
("H" . ("C" "CC" "cc" "cpp" "cxx" "c++" "mm" "m"))
("HH" . ("CC" "cc" "C" "cpp" "cxx" "c++"))
("cpp" . ("hpp" "hxx" "h++" "HH" "hh" "H" "h"))
("cxx" . ("hxx" "hpp" "h++" "HH" "hh" "H" "h"))
("c++" . ("h++" "hpp" "hxx" "HH" "hh" "H" "h"))
("CC" . ("HH" "hh" "hpp" "hxx" "h++" "H" "h"))
("cc" . ("hh" "HH" "hpp" "hxx" "h++" "H" "h"))
("C" . ("hpp" "hxx" "h++" "HH" "hh" "H" "h"))
("c" . ("h"))
("m" . ("h"))
("mm" . ("h"))))
;使用代码折叠
(when (and window-system (require 'semantic-tag-folding nil 'noerror))
(global-semantic-tag-folding-mode 1)
(global-set-key (kbd "C-?") 'global-semantic-tag-folding-mode)
(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))
(provide 'init-cedet)