zoukankan      html  css  js  c++  java
  • emacs配置大全(cedet+ecb+cscope+gdbui)jzj

    原文地址:http://blog.csdn.net/nhczp/article/details/1862695

    本文主要讨论以下几方面的设置:
    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.yuanma.org/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.sourceforge.net/
    按照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.sourceforge.net/
    .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.cdut.edu.cn/EmacsCscope.html
    5.gdb-many-window
       这个功能插件可以使emacs的调试界面像VC一样,有watch, stacktrace等窗口,真正实现图形化gdb.
    下载:
    http://www.inet.net.nz/~nickrob/multi-gud.el
    http://www.inet.net.nz/~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.inet.net.nz/
    一遍使用gdb-ui的教程:
    http://blog.chinaunix.net/u/5958/showart_137996.html

    6.行号
    见:
    然后在.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文件,供参考(比较乱,没整理过):

    (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)

  • 相关阅读:
    android开发布局三(微信布局)
    Android开发adb,SQLite数据库运用
    直线电机磁负荷、电负荷
    MIT公开课(一):电场和偶极子
    哈工大电气工程系硕士研究生入学复试——自动控制原理1、2章
    直线电机与旋转电机的区别
    Math类介绍
    Scala编辑器和IntelliJ IDEA开发环境配置
    减少cpu的方法
    AS内存清理,建议以及查找内存泄露的方法
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2115399.html
Copyright © 2011-2022 走看看