;; 设置home地址
(setenv "HOME" "E:/emacs-24.1")(setenv "PATH" "E:/emacs-24.1")
;;set the default file path
(setq default-directory "~/")
(add-to-list 'load-path "~/site-lisp")
(custom-set-variables
'(tool-bar-mode nil)
;;关闭菜单栏.
'(menu-bar-mode nil)
;;关闭滚动条.
;; '(scroll-bar-mode nil)
)
(custom-set-faces
'(default ((t (:family "Consolas" :foundry "outline" :slant normal :weight normal :height 120 :width normal))))
)
;;启动0.5秒后自动最大化 (windows下)
(run-with-idle-timer 0 nil 'w32-send-sys-command 61488)
;; 最大化
;; (defun w32-restore-frame ()
;; "Restore a minimized frame"
;; (interactive)
;; (w32-send-sys-command 61728))
;; (defun w32-maximize-frame ()
;; "Maximize the current frame"
;; (interactive)
;; (w32-send-sys-command 61488))
;; (w32-maximize-frame)
;;关闭烦人的出错时的提示声。
(setq visible-bell t)
;;关闭起动时的那个“开机画面”。
(setq inhibit-startup-message t)
;; (setq column-number-mode t)
(global-linum-mode t)
;;显示列号。
(setq mouse-yank-at-point t)
;;不要在鼠标点击的那个地方插入剪贴板内容。我不喜欢那样,经常把 我的文档搞的一团糟。我觉得先用光标定位,然后鼠标中键点击要好 ;;的多。不管你的光标在文档的那个位置,或是在 minibuffer,鼠标 中键一点击,X selection 的内容就被插入到那个位置。
(setq kill-ring-max 200)
;;用一个很大的 kill ring. 这样防止我不小心删掉重要的东西。我很 努莽的,你知道 :P
(setq default-fill-column 60)
;;把 fill-column 设为 60. 这样的文字更好读。
;; (setq-default indent-tabs-mode nil)
;; (setq default-tab-width 8)
;; (setq tab-stop-list ())
;; (loop for x downfrom 40 to 1 do
;; (setq tab-stop-list (cons (* x 4) tab-stop-list)))
;; 不用 TAB 字符来indent, 这会引起很多奇怪的错误。编辑 Makefile 的时候也不用担心,因为 makefile-mode 会把 TAB 键设置成真正的 TAB ;; 字符,并且加亮显示的。
(setq sentence-end "\\([。!?]\\|……\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*")
(setq sentence-end-double-space nil)
;; 设置 sentence-end 可以识别中文标点。不用在 fill 时在句号后插入两个空格。
(setq enable-recursive-minibuffers t)
;; 可以递归的使用 minibuffer。我经常需要这么做。
(setq scroll-margin 3
scroll-conservatively 10000)
;; 防止页面滚动时跳动, scroll-margin 3 可以在靠近屏幕边沿3行时就开始滚动,可以很好的看到上下文。
(setq default-major-mode 'text-mode)
;; 把缺省的 major mode 设置为 text-mode, 而不是几乎什么功能也 没有的 fundamental-mode.
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;; 括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号。
(mouse-avoidance-mode 'animate)
;; 光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线。
(setq frame-title-format "emacs@%b")
;; 在标题栏显示buffer的名字,而不是 emacs@wangyin.com 这样没用 的提示。
(auto-image-file-mode)
;; 让 Emacs 可以直接打开和显示图片。
(global-font-lock-mode t)
;; 进行语法加亮。
(put 'set-goal-column 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
(put 'LaTeX-hide-environment 'disabled nil)
;; 把这些缺省禁用的功能打开。
;; 关闭自动备份
(setq make-backup-files nil)
;; (setq version-control t)
;; (setq kept-new-versions 3)
;; (setq delete-old-versions t)
;; (setq kept-old-versions 2)
;; (setq dired-kept-versions 1)
;; 设置一下备份时的版本控制,这样更加安全。
(mapcar
(function (lambda (setting)
(setq auto-mode-alist
(cons setting auto-mode-alist))))
'(("\\.xml$". sgml-mode)
("\\\.bash" . sh-mode)
("\\.rdf$". sgml-mode)
("\\.session" . emacs-lisp-mode)
("\\.l$" . c-mode)
("\\.css$" . css-mode)
("\\.cfm$" . html-mode)
("gnus" . emacs-lisp-mode)
("\\.idl$" . idl-mode)))
;; 一个简单的办法设置 auto-mode-alist, 免得写很多 add-to-list.
;; (setq user-full-name "")
;; (setq user-mail-address "")
;;设置有用的个人信息。这在很多地方有用。
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;; 让 dired 可以递归的拷贝和删除目录。
;; 加载session
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
;; 加载desktop M-x desktop-save
(load "desktop")
(desktop-load-default)
(desktop-read)
;; 自动保存桌面环境
;; (desktop-save-mode 1)
;; 加载ibufer
(require 'ibuffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)
;; 快速切换窗口
;; 加载ido
(require 'ido)
(ido-mode t)
;;{{{ ido: fast switch buffers
(add-hook 'ido-define-mode-map-hook 'ido-my-keys)
(defun ido-my-keys ()
"Set up the keymap for `ido'."
;; common keys
(define-key ido-mode-map "\C-e" 'ido-edit-input)
(define-key ido-mode-map "\t" 'ido-complete) ;; complete partial
(define-key ido-mode-map "\C-j" 'ido-select-text)
(define-key ido-mode-map "\C-m" 'ido-exit-minibuffer)
(define-key ido-mode-map "?" 'ido-completion-help) ;; list completions
(define-key ido-mode-map [(control ? )] 'ido-restrict-to-matches)
(define-key ido-mode-map [(control ?@)] 'ido-restrict-to-matches)
;; cycle through matches
(define-key ido-mode-map "\C-r" 'ido-prev-match)
(define-key ido-mode-map "\C-s" 'ido-next-match)
(define-key ido-mode-map [right] 'ido-next-match)
(define-key ido-mode-map [left] 'ido-prev-match)
;; toggles
(define-key ido-mode-map "\C-t" 'ido-toggle-regexp) ;; same as in isearch
(define-key ido-mode-map "\C-p" 'ido-toggle-prefix)
(define-key ido-mode-map "\C-c" 'ido-toggle-case)
(define-key ido-mode-map "\C-a" 'ido-toggle-ignore)
;; keys used in file and dir environment
(when (memq ido-cur-item '(file dir))
(define-key ido-mode-map "\C-b" 'ido-enter-switch-buffer)
(define-key ido-mode-map "\C-d" 'ido-enter-dired)
(define-key ido-mode-map "\C-f" 'ido-fallback-command)
;; cycle among directories
;; use [left] and [right] for matching files
(define-key ido-mode-map [down] 'ido-next-match-dir)
(define-key ido-mode-map [up] 'ido-prev-match-dir)
;; backspace functions
(define-key ido-mode-map [backspace] 'ido-delete-backward-updir)
(define-key ido-mode-map "\d" 'ido-delete-backward-updir)
(define-key ido-mode-map [(meta backspace)] 'ido-delete-backward-word-updir)
(define-key ido-mode-map [(control backspace)] 'ido-up-directory)
;; I can't understand this
(define-key ido-mode-map [(meta ?d)] 'ido-wide-find-dir)
(define-key ido-mode-map [(meta ?f)] 'ido-wide-find-file)
(define-key ido-mode-map [(meta ?k)] 'ido-forget-work-directory)
(define-key ido-mode-map [(meta ?m)] 'ido-make-directory)
(define-key ido-mode-map [(meta down)] 'ido-next-work-directory)
(define-key ido-mode-map [(meta up)] 'ido-prev-work-directory)
(define-key ido-mode-map [(meta left)] 'ido-prev-work-file)
(define-key ido-mode-map [(meta right)] 'ido-next-work-file)
;; search in the directories
;; use C-_ to undo this
(define-key ido-mode-map [(meta ?s)] 'ido-merge-work-directories)
(define-key ido-mode-map [(control ?\_)] 'ido-undo-merge-work-directory)
)
(when (eq ido-cur-item 'file)
(define-key ido-mode-map "\C-k" 'ido-delete-file-at-head)
(define-key ido-mode-map "\C-l" 'ido-toggle-literal)
(define-key ido-mode-map "\C-o" 'ido-copy-current-word)
(define-key ido-mode-map "\C-v" 'ido-toggle-vc)
(define-key ido-mode-map "\C-w" 'ido-copy-current-file-name)
)
(when (eq ido-cur-item 'buffer)
(define-key ido-mode-map "\C-b" 'ido-fallback-command)
(define-key ido-mode-map "\C-f" 'ido-enter-find-file)
(define-key ido-mode-map "\C-k" 'ido-kill-buffer-at-head)
))
(ido-mode t)
;;}}}
;; tab bar tabbar.el
(require 'tabbar)
(tabbar-mode)
(global-set-key [(meta k)] 'tabbar-backward-group)
(global-set-key [(meta j)] 'tabbar-forward-group)
(global-set-key [(meta h)] 'tabbar-backward)
(global-set-key [(meta l)] 'tabbar-forward)
;; 把标签栏左边的那些按钮都取消掉
(setq
tabbar-scroll-left-help-function nil ;don't show help information
tabbar-scroll-right-help-function nil
tabbar-help-on-tab-function nil
tabbar-home-help-function nil
tabbar-buffer-home-button (quote (("") "")) ;don't show tabbar button
tabbar-scroll-left-button (quote (("") ""))
tabbar-scroll-right-button (quote (("") "")))
;; 改变tabbar的分组
(defun tabbar-buffer-groups ()
"tabbar group"
(list
(cond
((memq major-mode '(shell-mode dired-mode))
"shell"
)
((eq major-mode 'dired-mode)
"Dired"
)
((memq major-mode
'(help-mode apropos-mode Info-mode Man-mode))
"Help"
)
((string-equal "*" (substring (buffer-name) 0 1))
"Buffer"
)
(t
"Main"
)
)))
(setq tabbar-buffer-groups-function 'tabbar-buffer-groups)
;; 使用 backward-kill-word (向后删一词)
(global-set-key "\C-w" 'backward-kill-word)
(global-set-key "\C-x\C-k" 'kill-region)
(global-set-key "\C-c\C-k" 'kill-region)