免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 846 | 回复: 0
打印 上一主题 下一主题

Emacs配置文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-28 21:42 |只看该作者 |倒序浏览
我的Emacs配置文件
   
说明
应朋友要求,共享一下我的Emacs配置文件。稍微整理了一下,还是有点乱,大家将就看吧。
我的配置文件参考了水木社区BBS和其他网站很多人的文章以及配置文件,由于是好多年来一点一点攒起来的,因此无法一一列出,请原谅。
从头开始一段一段贴吧。
基本环境
配色方案设定
几乎一天到晚面对着emacs,为了防止眼睛瞎掉,所以选个比较不刺眼的配色方案。
(require 'color-theme)
;;(color-theme-initialize)
;;(color-theme-tty-dark)
(color-theme-comidia)
;;(color-theme-dark-laptop)
杂七杂八的设定
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
'(browse-url-mozilla-program "firefox")
'(case-fold-search-t nil)
'(column-number-mode t)
'(compilation-scroll-output t)
'(compile-command "make")
;; '(current-language-environment "Chinese-GB")
'(display-time-mode t)
'(ecb-options-version "2.32")
'(global-font-lock-mode t)
'(show-paren-mode t)
'(tab-width 4)
'(tool-bar-mode nil)
'(transient-mark-mode t))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
)
字体配置
注意,这里并不是字体配置的全部内容,还有一部分在.Xdefaults里。
;;字体设定
(set-fontset-font
   "fontset-default" nil
    "-*-simsun-*-*-*-*-18-*-*-*-*-*-gb2312.1980-*" nil 'prepend)
(set-fontset-font
   "fontset-courier" 'kana
    "-*-simsun-*-*-*-*-18-*-*-*-*-*-gbk-0" nil 'prepend)
(set-fontset-font
   "fontset-courier" 'han
    "-*-simsun-*-*-*-*-18-*-*-*-*-*-gbk-0" nil 'prepend)
(set-fontset-font
   "fontset-courier" 'cjk-misc
    "-*-simsun-*-*-*-*-18-*-*-*-*-*-gbk-0" nil 'prepend)
语言环境设定
(set-language-environment 'Chinese-GBK)
(set-selection-coding-system 'chinese-gbk)
(set-terminal-coding-system 'chinese-gbk)
(set-keyboard-coding-system 'chinese-gbk)
(set-language-environment 'Chinese-GBK)
(setq locale-coding-system 'chinese-gbk)
(setq current-language-environment "Chinese-GBK")
(set-selection-coding-system 'chinese-gbk)
(prefer-coding-system 'chinese-gbk)
(setq file-coding-system-alist
    (list file-coding-system-alist
        `(".*" chinese-gbk)))
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
全局的快捷键
;;;;以下是我的快捷键设置
;; ----------------------- Short Cut -------------------------
(global-set-key [(meta g)] 'goto-line)
;;(global-set-key [(meta ?/)] 'hippie-expand)
;; F12 t 从当前缓冲区建立任务
(global-set-key (kbd " t") 'planner-create-task-from-buffer)
;; F12 g 切换到当日的任务
;;(global-set-key (kbd " g") 'planner-goto-today)
(global-set-key (kbd " g") 'planner-goto-today)
(global-set-key (kbd " p") 'plan)
;; F12 r 添加当前备忘录
(global-set-key (kbd " r") 'remember)
;; F12 c 切换到日历
(global-set-key (kbd " c") 'calendar)
;;;F2:进入wiki-mode模式
(global-set-key [(f2)] 'emacs-wiki-find-file)
;;;F3:切换到dired模式
(global-set-key [(f3)] 'dired)
;;;F4:切换到shell模式
(global-set-key [(f4)] 'ansi-term)
;;;F5:打开speedbar
(global-set-key [(f5)] 'speedbar)
;;;;F7:调用compile
(global-set-key (kbd "") 'compile)
;;;Alt+s : 让speedbar获得焦点
(global-set-key (kbd "M-s") 'speedbar-get-focus)
;;;F9:列举我的书签
(global-set-key (kbd "") 'list-bookmarks)
;;;F10:添加当前页到书签中
(global-set-key [(f10)] 'bookmark-set)
;;;F12 u 更新当前版本
(global-set-key (kbd " u") 'vc-next-action)
;;------------------------End of Short Cut ---------------------
CEDET的配置
cedet的全称是Collection of Emacs Development Environment Tools
;;;;模板文件目录
(setq template-home-directory "~/lib/templates")
;;;;导入CEDET的各个插件
;; ---------------------------------------
;; Load CEDET
(load-file "~/lib/emacs-lisp/cedet-1.0pre3/common/cedet.el")
;; Enabling various SEMANTIC minor modes.  See semantic/INSTALL for more ideas.
;; Select one of the following
(semantic-load-enable-code-helpers)
;; (semantic-load-enable-guady-code-helpers)
;; (semantic-load-enable-excessive-code-helpers)
;; Enable this if you develop in semantic, or develop grammars
;; (semantic-load-enable-semantic-debugging-helpers)
;; ---------------------------------------
;;;; 配置 Emacs Code Browser
(add-to-list 'load-path
             "/home/caole/lib/emacs-lisp/ecb-2.32")
(require 'ecb)
;;;;配置Sementic的检索范围
(setq semanticdb-project-roots
          (list
        (expand-file-name "/")))
又是一些杂七杂八的配置
;;;; 显示行号:
(setq column-number-mode t)
(setq line-number-mode t)
;;;; 显示时间
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(display-time)
;;;; 关闭启动画面
(setq inhibit-startup-message t)
;;;;设置大的kill ring
(setq kill-ring-max 150)
备份策略
;;;;备份策略
(setq backup-directory-alist '(("" . "~/backup/emacs/backup")))
(setq-default make-backup-file t)
(setq make-backup-file t)
(setq make-backup-files t)
(setq version-control t)
(setq kept-old-versions 2)
(setq kept-new-versions 10)
(setq delete-old-versions t)
自动补齐
;;;;自动补齐策略
(defun my-indent-or-complete ()
   (interactive)
   (if (looking-at "\\>")
          (hippie-expand nil)
          (indent-for-tab-command))
)
(global-set-key [(control tab)] 'my-indent-or-complete)
(autoload 'senator-try-expand-semantic "senator")
(setq hippie-expand-try-functions-list
          '(
                senator-try-expand-semantic
                try-expand-dabbrev
                try-expand-dabbrev-visible
                try-expand-dabbrev-all-buffers
                try-expand-dabbrev-from-kill
                try-expand-list
                try-expand-list-all-buffers
                try-expand-line
        try-expand-line-all-buffers
        try-complete-file-name-partially
        try-complete-file-name
        try-expand-whole-kill
        )
)
程序设计的配置
;;;; CC-mode配置  http://cc-mode.sourceforge.net/
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)
;;;;根据后缀判断所用的mode
;;;;注意:我在这里把.h关联到了c++-mode
(setq auto-mode-alist
          (append '(("\\.h$" . c++-mode)) auto-mode-alist))
;;;;我的C/C++语言编辑策略
(defun my-c-mode-common-hook()
  (setq tab-width 4 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 [(f7)] 'compile)
  (define-key c-mode-base-map [(f8)] 'ff-get-other-file)
  (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)
  (setq tab-width 4 indent-tabs-mode nil)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
;;;;我的C++语言编辑策略
(defun my-c++-mode-hook()
  (setq tab-width 4 indent-tabs-mode nil)
  (c-set-style "stroustrup")
;;  (define-key c++-mode-map [f3] 'replace-regexp)
)
(add-hook 'c++-mode-hook 'my-c++-mode-hook)
;;;;C/C++语言启动时自动加载semantic对/usr/include的索引数据库
(setq semanticdb-search-system-databases t)
  (add-hook 'c-mode-common-hook
          (lambda ()
            (setq semanticdb-project-system-databases
                  (list (semanticdb-create-database
                           semanticdb-new-database-class
                           "/usr/include")))))
;;;;我的Java语言编辑策略
(defun my-java-mode-hook()
  (setq tab-width 4 indent-tabs-mode nil)
)
(add-hook 'java-mode-hook 'my-java-mode-hook)
;;;; Python Mode设置
(add-to-list 'load-path "/home/caole/lib/emacs-lisp/python-mode-1.0")
(require 'python-mode)
;;(require 'pycomplete)
(require 'doctest-mode)
;;;; 注释配置
(load-file "/home/caole/lib/emacs-lisp/gnome-doc.el")
我的Emacs Wiki配置
;;;;我的Emacs Wiki配置
;; ------------------------------  WIKI  --------------------------
(add-to-list 'load-path
             "/home/caole/lib/emacs-lisp/emacs-wiki-2.70")
(add-to-list 'load-path "/home/caole/lib/emacs-lisp/")
(require 'emacs-wiki)
(require 'emacs-wiki-menu)
(require 'emacs-wiki-srctag)
;;指定Wiki工作目录
(setq emacs-wiki-directories '("~/document/wiki/diary"))
;;指定项目及工作目录
(setq emacs-wiki-projects
      `(("default" . ((emacs-wiki-directories . ("~/document/wiki/"))))
        ("default" . ((fill-column .65)
                      (emacs-wiki-directories . ("~/document/wiki/diary"))))
            ("diary" . ((fill-column .65)
                      (emacs-wiki-directories . ("~/document/wiki/diary"))))
            ("emacs" . ((fill-column . 65)
                      (emacs-wiki-directories . ("~/document/wiki/diary"))))
            ("linux" . ((fill-column . 65)
                      (emacs-wiki-directories . ("~/document/wiki/diary"))))))
;;wiki目录下所有文件都会出现在publish目录中
(setq emacs-wiki-publishing-directory "publish")
;;指定publish工作目录
(setq emacs-wiki-publishing-directory "~/document/publish")
;;css文件应该放在publish目录中,
(setq emacs-wiki-style-sheet "")
;;在wiki-directory下必须有一个emacs-wiki-home-page所指定名字的文件,
;;默认是WelcomePage,才能在生成的html文件里才会出现形如"Home/Index"的
;;样式,这里改为Home。只要在wiki的工作目录下有这样一个文件作为首页即可。
(setq emacs-wiki-home-page "Home")
;;中文设置
(setq emacs-wiki-meta-content-coding "gbk")
(setq emacs-wiki-charset-default "gbk")
(setq emacs-wiki-coding-default 'gbk)
;;维护设置
(setq emacs-wiki-inline-relative-to 'emacs-wiki-publishing-directory)
(setq emacs-wiki-anchor-on-word nil)
(setq emacs-wiki-maintainer "mailto:caole82@gmail.com")
(setq emacs-wiki-table-attributes "border=\"1\" cellpadding=\"1\"")
(add-hook 'emacs-wiki-mode-hook
          (lambda ()
            (define-key emacs-wiki-mode-map (kbd "C-c C-h") 'emacs-wiki-preview-html)
;;C-c C-h 预览HTML页面
            (define-key emacs-wiki-mode-map (kbd "C-c C-c") 'emacs-wiki-preview-source)))
;;C-c C-c 预览wiki代码
;;指定emacs wiki 导航菜单
(setq emacs-wiki-menu-factory 'emacs-wiki-menu-make-from-projects)
(defun emacs-wiki-preview-source ()
  (interactive)
  (emacs-wiki-publish-this-page)
  (find-file (emacs-wiki-published-file)))
(defun emacs-wiki-preview-html ()
  (interactive)
  (emacs-wiki-publish-this-page)
  (browse-url (emacs-wiki-published-file)))
(add-hook 'emacs-wiki-mode-hook
          (lambda ()
            (define-key emacs-wiki-mode-map (kbd "C-c C-h") 'emacs-wiki-preview-html)
            (define-key emacs-wiki-mode-map (kbd "C-c C-c") 'emacs-wiki-preview-source)))
(defun emacs-wiki-preview-source ()
  (interactive)
  (emacs-wiki-publish-this-page)
  (find-file (emacs-wiki-published-file)))
(defun emacs-wiki-preview-html ()
  (interactive)
  (emacs-wiki-publish-this-page)
  (browse-url (emacs-wiki-published-file)))
(setq emacs-wiki-index-page "./index.html")
;; ----------------------- END OF WIKI -----------------------------
我的planner和Remeber设置
拿Emacs做Todo和Remember之类的工具还是非常好用的。
;;;; 我的Planner 配置
(add-to-list 'load-path
             "/home/caole/lib/emacs-lisp/planner")
(require 'planner)
(setq planner-publishing-directory "~/document/wiki/diary/plan")
(planner-calendar-insinuate)
(setq planner-calendar-show-planner-files t)
;;;; 我的remember设置
(add-to-list 'load-path
             "/home/caole/lib/emacs-lisp/remember")
(require 'remember-planner)
(setq remember-handler-functions '(remember-planner-append))
(setq remember-annotation-functions planner-annotation-functions)
剩下的全部
一股脑都贴上来吧。
;;;;配置psvn
(add-to-list 'load-path
                         "/home/caole/lib/emacs-lisp")
(require 'psvn)
;;;;配置Semantic分析文件的目录
(setq semanticdb-default-save-directory (expand-file-name "/home/caole/backup/emacs/semantic.cache/semanticdb"))
;;;;编译elisp文件
;;(byte-recompile-directory "/home/caole/lib/emacs-lisp/" 0 t)
;;;;将C-x C-b进入的Buffer列表改为ibuffer,获得和dired类似的操作界面
(add-to-list 'load-path
                         "/home/caole/lib/emacs-lisp")
(require 'ibuffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)
;;;;保存所有上次关闭的信息
(add-to-list 'load-path
                         "/home/caole/lib/emacs-lisp")
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
;;;;给Emacs添加Tab功能
(add-to-list 'load-path
                         "/home/caole/lib/emacs-lisp")
(require 'tabbar)
(tabbar-mode)
(global-set-key (kbd "M-[") 'tabbar-backward-group)
(global-set-key (kbd "M-]") 'tabbar-forward-group)
(global-set-key (kbd "M-p") 'tabbar-backward-tab)
(global-set-key (kbd "M-n") 'tabbar-forward-tab)
;;;;导入HTML
(add-to-list 'load-path
                         "/home/caole/lib/emacs-lisp")
(require 'htmlize)
;;;;光标靠近鼠标指针时让鼠标指针自己闪开
;;(mouse-avoidance-mode 'animate)
;;;;修改标题栏,显示buffer的名字
(setq frame-title-format "%b")
;;;;启动Emacs Server
(server-start)
;;;;每次进入Emacs即显式Plan
;;;;(plan)
;;;;高亮当前行
;;(require 'hl-line)
;;(global-hl-line-mode t)
;;;;向左右滚动的命令激活:C-x
(put 'scroll-left 'disabled nil)
;;配置一下shell的颜色
;;(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
;;(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
;;(setq ansi-color-for-comint-mode t)
;;;;退出Emacs时保存所有正在编辑的文档
(load "desktop")
(desktop-save-mode)
(desktop-read)
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/95382/showart_1913594.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP