本文主要讨论以下几方面的设置: 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) |
|