分享

程序员的emacs配置大全(cedet+ecb+cscope+gdb-ui)-jzj

 xiaochong 2008-03-21

本文主要讨论以下几方面的设置:

1.字体

2.cedet

3.ecb

4.cscope

5.gdb-many-window

6.行号

7.缩进

环境:

openSUSE 10.2

默认装的是Emacs 21,我从网上下了Emacs 22.1的tar包,编译安装。

1.字体

默认的字体非常之小,以下是一篇非常详细的Emacs下设置字体的教程

http://www./data/2006/0503/article_355.htm

可惜太长了,长到我实在是懒得看。我抄了个现成的:

(set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1")

或者只写:

(set-default-font "10x20")

第二种方法效果不错:)

2.cedet

下载cedet: http://cedet./

按照INSTALL安装就行,然后设置.emacs。INSTALL里有一段关于设置的,粘贴过来即可,另外最好在.emacs中设一个speedbar的快捷键:

(global-set-key [(f4)] ‘speedbar-get-focus)

这样按一个F4,speedbar就出来了。

再加一条:

(define-key c-mode-base-map [(meta ?/)] ‘semantic-ia-complete-symbol-menu)

于是,在程序中按下Alt+/,就会弹出菜单让你自动补全。

3.ecb

http://ecb./

.emacs里:

(add-to-list ‘load-path "~/software/ecb-2.32")

;;(require ‘ecb)

(require ‘ecb-autoloads)

打开emacs,然后M-x ecb-activate即可打开ecb。

4.cscope

这个应该和ecb的有些功能是重复的

先装好cscope,再把/cscope-15.6/contrib/xcscope目录下的xcscope.el加载到emacs中去:

(add-to-list ‘load-path "~/software/cscope-15.6/contrib/xcscope")

(require ‘xcscope)

之后先M-x !,然后cscope -b,之后就可以在源代码中进行跳转了。命令见cscope菜单

这里有篇讲怎么在emacs下安装和使用cscope的:

http://ann77.stu./EmacsCscope.html

5.gdb-many-window

这个功能插件可以使emacs的调试界面像VC一样,有watch, stacktrace等窗口,真正实现图形化gdb.

下载:

http://www./~nickrob/multi-gud.el

http://www./~nickrob/multi-gdb-ui.el

设置.emacs:

(setq gdb-many-windows t)

;;...

(load-library "multi-gud.el")

(load-library "multi-gdb-ui.el")

在emacs中编译好程序,然后M-x gdb,连按两次ret,多窗口gdb就出来了

还不行的看详细官方教程:http://www./

一遍使用gdb-ui的教程:

http://blog./u/5958/showart_137996.html

6.行号

见:

http://ann77.stu./EmacsDisplayLineNumber.html

然后在.emacs里加上:

(add-to-list ‘load-path "~/backup/emacs") ;;这行根据你放el文件的地方改

(require ‘display-line-number)

(global-display-line-number-mode 1)

;;(setq display-line-number-mode-on t)

(add-hook ‘c-mode-hook ‘display-line-number-mode)

(add-hook ‘cc-mode-hook ‘display-line-number-mode)

这个感觉比setnu.el那个好用,setnu.el有时候行号会乱掉的。

7.缩进

emacs的缩进方式和其它编辑器有些不同,text-mode下不能tab,只能用C-q tab才行。

c-mode或cc-mode下缩进只有2格,这个当然不符合大多数人的习惯,如果要设为4:

(add-hook ‘c-mode-hook

‘(lambda ()

(c-set-style "Stroustrup")))

如果要设成8:

options->Customize Emacs->Browse Customization Group->Programming->Language->C->C-Basic-offset,设成8就行,保存

主要参考文献:

Emacs安装一个扩展包的方法

http://ann77.stu./EmacsInstallPackege.html

一个比较全的.emacs配置文件:

http://www./guangping/archive/2006/08/25/11683.html

在emacs下用c/c++编程

http://www./diary/emacs_write_cpp.html

我的.emacs文件,供参考(比较乱,没整理过):(setq initial-frame-alist ‘((top . 0) (left . 0) (width . 1024) (height . 768)))

(column-number-mode t)

(transient-mark-mode t)

(setq line-number-mode t)

(setq default-tab-width 8)

(customize-set-variable ‘scroll-bar-mode‘ right)

;;(setq default-directory "home/jzj/backup/emacs/")

(setq inhibit-startup-message t)

(setq global-font-lock-mode t)

(setq make-backup-files nil)

(setq auto-save-mode nil)

(setq x-select-enable-clipboard t)

(setq mouse-yank-at-point t)

;;(global-set-key [home] ‘beginning-of-buffer)

;;(global-set-key [end] ‘end-of-buffer)

(global-set-key [f3] ‘display-line-number-mode-on)

;;(global-set-key [f4] ‘other-window)

(global-set-key [f5] ‘compile)

(setq-default compile-command "make")

;;(global-set-key [f7] ‘du-onekey-compile)

(global-set-key [f6] ‘gdb)

(global-set-key [C-f7] ‘previous-error)

(global-set-key [f7] ‘next-error)

;;(set-default-font "9x15")

;;(set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1")

(set-default-font "10x20")

;;(set-default-font "-outline-新宋体-normal-r-normal-normal-14-*-96-96-c-*-gb2312")

;; Load CEDET

(load-file "~/software/cedet-1.0pre4/common/cedet.el")

;; Enabling various SEMANTIC minor modes.  See semantic/INSTALL for more ideas.

;; Select one of the following:

;; * This enables the database and idle reparse engines

;;(semantic-load-enable-minimum-features)

;; * This enables some tools useful for coding, such as summary mode

;;   imenu support, and the semantic navigator

;;(semantic-load-enable-code-helpers)

;; * This enables even more coding tools such as the nascent intellisense mode

;;   decoration mode, and stickyfunc mode (plus regular code helpers)

;;(semantic-load-enable-guady-code-helpers)

;; * This turns on which-func support (Plus all other code helpers)

(semantic-load-enable-excessive-code-helpers)

;; This turns on modes that aid in grammar writing and semantic tool

;; development.  It does not enable any other features such as code

;; helpers above.

(semantic-load-enable-semantic-debugging-helpers)

(global-set-key [(f4)] ‘speedbar-get-focus)

(require ‘cc-mode)

(c-set-offset ‘inline-open 0)

;;(c-set-offset ‘friend ‘-)

(c-set-offset ‘substatement-open 0)

(defun my-c-mode-common-hook()

(setq tab-width 8 indent-tabs-mode nil)

;;; hungry-delete and auto-newline

(c-toggle-auto-hungry-state 1)

(define-key c-mode-base-map [(control \`)] ‘hs-toggle-hiding)

;; (define-key c-mode-base-map [(return)] ‘newline-and-indent)

;;  (define-key c-mode-base-map [(f6)] ‘compile)

(define-key c-mode-base-map [(meta \`)] ‘c-indent-command)

;;  (define-key c-mode-base-map [(tab)] ‘hippie-expand)

(define-key c-mode-base-map [(tab)] ‘my-indent-or-complete)

(define-key c-mode-base-map [(meta ?/)] ‘semantic-ia-complete-symbol-menu)

(setq c-macro-shrink-window-flag t)

(setq c-macro-preprocessor "cpp")

(setq c-macro-cppflags " ")

(setq c-macro-prompt-flag t)

(setq hs-minor-mode t)

(setq abbrev-mode t)

)

(add-hook ‘c-mode-common-hook ‘my-c-mode-common-hook)

(defun my-c++-mode-hook()

(setq tab-width 8 indent-tabs-mode nil)

(c-set-style "stroustrup")

;;  (define-key c++-mode-map [f3] ‘replace-regexp)

)

(setq gdb-many-windows t)

(add-to-list ‘load-path "~/backup/emacs")

(require ‘gud)

(require ‘display-line-number)

(global-display-line-number-mode 1)

;;(setq display-line-number-mode-on t)

(add-hook ‘c-mode-hook ‘display-line-number-mode)

(add-hook ‘cc-mode-hook ‘display-line-number-mode)

(add-to-list ‘load-path "~/software/ecb-2.32")

;;(require ‘ecb)

(require ‘ecb-autoloads)

;;for gdb-many-window mode

(load-library "multi-gud.el")

(load-library "multi-gdb-ui.el")

;; cscope in emacs

(add-to-list ‘load-path "~/software/cscope-15.6/contrib/xcscope")

(require ‘xcscope)

;; hotkey for cscope

(define-key global-map [(control f3)]  ‘cscope-set-initial-directory)

(define-key global-map [(control f4)]  ‘cscope-unset-initial-directory)

(define-key global-map [(control f5)]  ‘cscope-find-this-symbol)

(define-key global-map [(control f6)]  ‘cscope-find-global-definition)

(define-key global-map [(control f7)]

‘cscope-find-global-definition-no-prompting)

(define-key global-map [(control f8)]  ‘cscope-pop-mark)

(define-key global-map [(control f9)]  ‘cscope-next-symbol)

(define-key global-map [(control f10)] ‘cscope-next-file)

(define-key global-map [(control f11)] ‘cscope-prev-symbol)

(define-key global-map [(control f12)] ‘cscope-prev-file)

(define-key global-map [(meta f9)]  ‘cscope-display-buffer)

(define-key global-map [(meta f10)] ‘cscope-display-buffer-toggle)

(set-face-background ‘default "#334455")

(set-face-foreground ‘default "wheat")

(set-cursor-color "white")

;;(add-to-list ‘load-path "~/software/color-theme-6.6.0")

;;(require ‘color-theme)

;;(color-theme-dark-blue)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多