; c-mode (setq auto-mode-alist (append '(("\\.h$" . c++-mode)) auto-mode-alist)) (defun my-c-mode-common-hook () (c-toggle-auto-hungry-state 1) (c-set-style "stroustrup") (define-key c-mode-base-map (kbd "RET") 'c-context-line-break) (define-key c-mode-base-map (kbd "M-o") 'switch-cpp-h) (define-key c-mode-base-map (kbd "C-SPC") 'senator-completion-menu-popup) (define-key c-mode-base-map (kbd "C-c ;") 'comment-region) (define-key c-mode-base-map (kbd "C-c :") 'my-uncomment-region) (semantic-default-c-setup) (turn-off-filladapt-mode) ) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook) (add-hook 'c-mode-hook 'my-c-mode-common-hook) (add-hook 'c++-mode-hook 'my-c-mode-common-hook) (add-hook 'c-initialization-hook 'my-c-mode-common-hook) (defun my-uncomment-region () (comment-region (region-beginning) (region-end) (quote (4))) ) ; cedet (setq semantic-load-turn-useful-things-on t) (load-file "~/projects/emacs-lisp/lisp/cedet-1.0beta2a/common/cedet.el") (load-file "~/projects/emacs-lisp/lisp/cedet-1.0beta2a/semantic/semantic-load.el") (setq semanticdb-project-roots (list "/home/anthony/projects/development/nanosmalltalk" "/usr/include")) ; eldoc -- intellisense for cedet (require 'eldoc) (defun switch-cpp-h () "Switch to the corresponding .cpp, .c, .cc or .h file." (interactive) (let ((n (buffer-file-name)) (c nil)) (cond ((and (string-match "\\.h$" n) (progn (setq c (replace-match ".cpp" t t n)) (file-readable-p c))) (find-file c)) ((and (string-match "\\.h$" n) (progn (setq c (replace-match ".cc" t t n)) (file-readable-p c))) (find-file c)) ((and (string-match "\\.h$" n) (progn (setq c (replace-match ".c" t t n)) (file-readable-p c))) (find-file c)) ((string-match "\\.h$" n) (error "%s has no existing .cc, .c or .cpp" n)) ((string-match "\\.cpp$" n) (find-file (replace-match ".h" t t n))) ((string-match "\\.cc$" n) (find-file (replace-match ".h" t t n))) ((string-match "\\.c$" n) (find-file (replace-match ".h" t t n))) (t (error "%s is neither .h, .cc, .c or .cpp" n)))))