文件可以去我的资源里面下载。参考http://blog.csdn.net/pfanaya/article/details/6674336
越来越发现Emacs之伟大,现在终于明白为什么这个编辑器历经40年了仍旧这么受欢迎!
谢谢Richard Stallman,你永远是黑客中的传奇!
(setq default-directory "D:/")
(setq default-buffer-file-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
;;Emacs chinese environment
(set-language-environment 'Chinese-GB)
(set-keyboard-coding-system 'euc-cn)
(set-clipboard-coding-system 'euc-cn)
(set-terminal-coding-system 'euc-cn)
(set-buffer-file-coding-system 'euc-cn)
(set-selection-coding-system 'euc-cn)
(modify-coding-system-alist 'process "*" 'euc-cn)
(setq default-process-coding-system '(euc-cn . euc-cn)) ;;从网上抄来时,.两边没有空格,这是不对的。;;在执行命令时会提示 出错。
(add-to-list 'load-path "~/.emacs.d")
;;;session.el用来记录以打开过的文件 命令 寄存器 修改过的文件 最后修改的位置
;;把缺省的 major mode 设置为 text-mode, 而不是几乎什么功能也 没有的 fundamental-mode.
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;;括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号。
(mouse-avoidance-mode 'animate)
;;进行语法加亮。
(global-font-lock-mode t)
;;设置有用的个人信息
(setq user-full-name "visaya fan")
(setq user-mail-address "visayafan[AT]gmail.com or visayafan[AT]163.com")
;;让 dired 可以递归的拷贝和删除目录。
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
(setq visible-bell t)
;; 高亮显示选择区域
(setq transient-mark-mode t)
;; 设置tab为4个空格的宽度,而不是原来的2
(setq c-basic-offset 4)
(setq default-tab-width 4)
(setq-default indent-tabs-mode nil)
;; 不产生备份文件,临时文件
(setq make-backup-files nil)
(setq-default make-backup-files nil)
;; 打开图片显示功能
(auto-image-file-mode t)
;;==========================================================
;; 高亮当前行:hi-line.el,emacs自己带的
;;==========================================================
(require 'hl-line)
(global-hl-line-mode t)
;;页面平滑滚动, scroll-margin 3 靠近屏幕边沿3行时开始滚动,可以很好的看到上下文。
(setq scroll-margin 3
scroll-conservatively 10000)
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
(require 'ibuffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)
;;; browse-kill-ring
(require 'browse-kill-ring)
(global-set-key [(control c)(k)] 'browse-kill-ring)
(browse-kill-ring-default-keybindings)
(require 'ido)
(ido-mode t)
;;; hippie-expand
(global-set-key [(meta ?/)] 'hippie-expand)
(setq hippie-expand-try-functions-list
'(try-expand-dabbrev
try-expand-dabbrev-visible
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-complete-file-name-partially
try-complete-file-name
try-expand-all-abbrevs
try-expand-list
try-expand-line
try-complete-lisp-symbol-partially
try-complete-lisp-symbol))
(autoload 'thumbs "thumbs" "Preview images in a directory." t)
(auto-image-file-mode t)
(global-set-key [f9] 'ecb-activate)
(global-set-key (kbd "M-g") 'goto-line)
(tool-bar-mode nil)
;(menu-bar-mode nil)
;(scroll-bar-mode nil)
(require 'linum)
(global-linum-mode 1)
(require 'yasnippet-bundle)
(fset 'yes-or-no-p 'y-or-n-p)
(setq-default make-backup-files nil)
(setq column-number-mode t)
(setq default-fill-column 110)
;;(global-set-key [f6] 'eshell);F1??è?Shell
(global-set-key [f5] 'gdb);F5μ÷ê?3ìDò
(defadvice kill-ring-save (before slickcopy activate compile)
"When called interactively with no active region, copy a single line instead."
(interactive
(if mark-active (list (region-beginning) (region-end))
(list (line-beginning-position)
(line-beginning-position 2)))))
(defadvice kill-region (before slickcut activate compile)
"When called interactively with no active region, kill a single line instead."
(interactive
(if mark-active (list (region-beginning) (region-end))
(list (line-beginning-position)
(line-beginning-position 2)))))
(require 'xcscope)
;; 指针颜色
(set-cursor-color "blue")
;; 鼠标颜色
(set-mouse-color "yellow")
;; Load CEDET.
;; See cedet/common/cedet.info for configuration details.
(load-file "~/.emacs.d/cedet/common/cedet.el")
;; (semantic-load-enable-minimum-features)
(semantic-load-enable-code-helpers)
;; (semantic-load-enable-guady-code-helpers)
;; (semantic-load-enable-excessive-code-helpers)
(semantic-load-enable-semantic-debugging-helpers)
;; Enable EDE (Project Management) features
(global-ede-mode 1)
;; Enable EDE (Project Management) features
(global-ede-mode 1)
(global-set-key [(control f4)] 'speedbar)
;; Enable source code folding
(global-semantic-tag-folding-mode 1)
;;;;ECB
(add-to-list 'load-path
"~/.emacs.d/ecb")
(require 'ecb)
(setq ecb-tip-o/-the-day nil)
(global-set-key [M-left] 'windmove-left)
(global-set-key [M-right] 'windmove-right)
(global-set-key [M-up] 'windmove-up)
(global-set-key [M-down] 'windmove-down)
(setq ecb-tip-of-the-day nil)
;;;;隐藏和显示ECB窗口
;;(define-key global-map [(control f1)] 'ecb-hide-ecb-windows)
;;(define-key global-map [(control f2)] 'ecb-show-ecb-windows)
;;
;;;;使某一ecb窗口最大化
;;(define-key global-map "\C-c1" 'ecb-maximize-window-directories)
;;(define-key global-map "\C-c2" 'ecb-maximize-window-sources)
;;(define-key global-map "\C-c3" 'ecb-maximize-window-methods)
;;(define-key global-map "\C-c4" 'ecb-maximize-window-history)
;;
;;;;恢复原始窗口布局
;;(define-key global-map "\C-c0" 'ecb-restore-default-window-sizes)
;;
; compile-command (concat "C:/DEV-CPP/bin/g++ -g " "\"" buffer-file-name "\""))
;
;y (kbd "") 'smart-compile)
;
;ompile()
;
;)
;
;efile
;
;date-make-file-name '("makefile" "Makefile" "GNUmakefile"))
;
;nd nil))
;
;null
;
;(find t candidate-make-file-name :key
;
; '(lambda (f) (file-readable-p f)))))
;
;command "make -k ")
;
;D?òμ? Makefile £?2é?′μ±?° mode ê?·?ê?ò??aμ??é±àò?μ??£ê?
;
;ull (buffer-file-name (current-buffer)))
;
;essage "Buffer not attached to a file, won't compile!")
;
;f (eq major-mode 'c-mode)
;
; (setq command
;
; (concat "D:/DEV-CPP/bin/gcc.exe -Wall -o " ;;??òa?÷è·?aμà×??oμ?±àò??÷?ú??à?,
;
; (file-name-sans-extension ;;?a?ù,ó???μ?gcc.exeμ?μ??·′úì??aà?μ?D:/Dev-Cpp/bin/gcc.exe
;
; (file-name-nondirectory buffer-file-name)) ;;×¢òa,?aà?μ??·??μ?D±?üoívistaμ??°1??à·′,??òa×¢òaDT??
;
; " "
;
; (file-name-nondirectory buffer-file-name)
;
; " -g -lm "))
;
;(if (eq major-mode 'c++-mode)
;
; (setq command
;
; (concat "D:/DEV-CPP/bin/g++.exe -Wall -o " ;;?1óD?aà?μ?g++,ò2í?gccò??ù...
;
; (file-name-sans-extension
;
; (file-name-nondirectory buffer-file-name))
;
; " "
;
; (file-name-nondirectory buffer-file-name)
;
; " -g -lm "))
;
; (message "Unknow mode, won't compile!")))))
;
;null command))
;
;(command (read-from-minibuffer "Compile command: " command)))
;
;pile command)))))
(custom-set-variables
;; 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.
'(ecb-layout-window-sizes (quote (("left8" (0.23214285714285715 . 0.27906976744186046) (0.23214285714285715 . 0.23255813953488372) (0.23214285714285715 . 0.27906976744186046) (0.23214285714285715 . 0.18604651162790697)))))
'(ecb-options-version "2.40")
'(matlab-shell-command "C:/Program Files/MATLAB/R2010b/bin/matlab.exe")
'(preview-dvips-command "C:/CTEX/MiKTeX/miktex/bin/dvips -Pwww -i -E %d -o %m/preview.000")
'(preview-fast-dvips-command "C:/CTEX/MiKTeX/miktex/bin/dvips -Pwww %d -o %m/preview.ps")
'(preview-gs-command "gswin32c.exe"))
(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.
)
;;color theme
(add-to-list 'load-path "~/.emacs.d/color-theme-6.6.0")
(require 'color-theme)
(eval-after-load "color-theme"
'(progn
(color-theme-initialize)))
;(color-theme-gnome2)))
(add-to-list 'load-path "~/.emacs.d/auctex/site-lisp/site-start.d")
;;;; .configure make sudo make install
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(if (string-equal system-type "windows-nt")
(require 'tex-mik))
(setq TeX-save-query nil)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
;(setq-default TeX-master nil)
(setq preview-scale-function 1.3)
(setq LaTeX-math-menu-unicode t)
(setq TeX-insert-braces nil)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
;;Auctex for Latex
(add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar)
(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(add-hook 'LaTeX-mode-hook (lambda()
;;调用latex命令
(add-to-list 'TeX-command-list (list "LaTeX" "latex %s.tex" 'TeX-run-command nil t))
;;调用dvipdfmx命令
(add-to-list 'TeX-command-list (list "dvi2pdf" "dvipdfmx %s.dvi" 'TeX-run-command nil t))
;;调用pdflatex命令;;调用pdflatex命令;;调用pdflatex命令
(add-to-list 'TeX-command-list (list "pdf Latex" "pdflatex %s.tex" 'TeX-run-command nil t))
; View PDF
(add-to-list 'TeX-command-list (list "View pdf" "start .\\\"%s.pdf\""'TeX-run-command nil t))
;;设置环境为xelatex
;;(add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t))
;;(setq TeX-command-default "XeLaTeX")
;;(setq TeX-save-query nil )
;;(setq TeX-show-compilation t)
))
;;=================================================
;;;+ latex-math-mode
;;=================================================
;; latex-math-mode (add math symbols to menu and shortcuts)
;; So that you can use, e.g., `a, to input \alpha. You may also define
;; your own customized shortcuts by setting the variable
;; LaTeX-math-list before loading LaTeX-math-mode.
;; to enable maths support
(setq LaTeX-math-mode t)
(setq TeX-electric-escape t) ;; you may like it or dislike it. I found it useful when inputting repeated commands -- you just need to type \ and ENTER to repeat the last latex command.
(add-hook 'LaTeX-mode-hook 'latex-math-mode) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'latex-math-mode) ; with Emacs latex mode
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
;;=================================================
;;;+ reftex-mode
;;=================================================
(autoload 'reftex-mode "reftex" "RefTeX Minor Mode" t)
(autoload 'turn-on-reftex "reftex" "RefTeX Minor Mode" nil)
(autoload 'reftex-citation "reftex-cite" "Make citation" nil)
(autoload 'reftex-index-phrase-mode "reftex-index" "Phrase mode" t)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
;(Global-set-key (kbd "") 'v_latex_compile)
;(fset 'v_latex_compile
; (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([3 3 return] 0 "%d")) arg)))
(global-set-key "\C-ccc" 'color-theme-gnome2)
(global-set-key "\C-ccb" 'color-theme-blue-sea)
(global-set-key "\C-ccg" 'color-theme-gray30)
(global-set-key "\C-ccd" 'color-theme-euphoria)
(require 'tabbar)
(tabbar-mode)
(global-set-key (kbd "M-P") 'tabbar-backward-group) 0
(global-set-key (kbd "M-N") 'tabbar-forward-group)
(global-set-key (kbd "M-p") 'tabbar-backward)
(global-set-key (kbd "M-n") 'tabbar-forward)
(global-set-key "\C-cds" 'desktop-save)
(global-set-key "\C-cdc" 'desktop-change-dir)
(setq x-select-enable-clipboard t);支持emacs和外部程序的粘贴
(setq frame-title-format '("" buffer-file-name ));在标题栏显示buffer名
;shell,gdb退出后,自动关闭该buffer
(add-hook 'shell-mode-hook 'mode-hook-func)
(add-hook 'gdb-mode-hook 'mode-hook-func)
(defun mode-hook-func ()
(set-process-sentinel (get-buffer-process (current-buffer))
#'kill-buffer-on-exit))
(defun kill-buffer-on-exit (process state)
(message "%s" state)
(if (or
(string-match "exited abnormally with code.*" state)
(string-match "finished" state))
(kill-buffer (current-buffer))))
(add-hook 'c-mode-hook 'hs-minor-mode)
(add-hook 'C++-mode-hook 'hs-minor-mode)
(add-hook 'lisp-mode-hook 'hs-minor-mode)
(add-hook 'html-mode-hook 'hs-minor-mode)
(global-set-key "\C-cha" 'hs-hide-all)
(global-set-key "\C-cas" 'hs-show-all)
(global-set-key "\C-chb" 'hs-hide-block)
(global-set-key "\C-cbs" 'hs-show-block)
(global-set-key "\C-chl" 'hs-hide-level)
;;hide region
(require 'hide-region)
(global-set-key (kbd "C-c h r") 'hide-region-hide)
(global-set-key (kbd "C-c s r") 'hide-region-unhide)
;; hide lines
(require 'hide-lines)
(global-set-key (kbd "C-c h L") 'hide-lines)
(global-set-key (kbd "C-c s l") 'show-all-invisible)
(global-set-key (kbd "C-c m l") 'list-matching-lines)
;;===================================
;;设置编译器==========================
;;===================================
;;(setq compile-command (concat "C:/Dev-Cpp/bin/g++ -g " "\"" buffer-file-name "\""))
;(global-set-key (kbd "") 'smart-compile)
;; (defun smart-compile()
;; ;; "比较智能的C/C++编译命令
;; ;;如果当前目录有makefile则用make -k编译,否则,如果是
;; ;;处于c-mode,就用gcc -Wall编译,如果是c++-mode就用 g++ -Wall编译"
;; (interactive)
;; ;; 查找 Makefile
;; (let ((candidate-make-file-name '("makefile" "Makefile" "GNUmakefile"))
;; (command nil))
;; (if (not (null
;; (find t candidate-make-file-name :key
;; '(lambda (f) (file-readable-p f)))))
;; (setq command "make -k ")
;; ;; 没有找到 Makefile ,查看当前 mode 是否是已知的可编译的模式
;; (if (null (buffer-file-name (current-buffer)))
;; (message "Buffer not attached to a file, won't compile!")
;; (if (eq major-mode 'c-mode)
;; (setq command
;; (concat "c:/study/CodeBlocks/MinGW/bin/gcc.exe -Wall -o " ;;你要明确知道自己的编译器在哪里,
;; (file-name-sans-extension ;;这样,用你的gcc.exe的地址代替这里的D:/Dev-Cpp/bin/gcc.exe
;; (file-name-nondirectory buffer-file-name)) ;;注意,这里的路径的斜杠和vista的习惯相反,你要注意修改
;; " "
;; (file-name-nondirectory buffer-file-name)
;; " -g -lm "))
;; (if (eq major-mode 'c++-mode)
;; (setq command
;; (concat " C:/study/CodeBlocks/MinGW/bin/g++.exe -Wall -o " ;;还有这里的g++,也同gcc一样...
;; (file-name-sans-extension
;; (file-name-nondirectory buffer-file-name))
;; " "
;; (file-name-nondirectory buffer-file-name)
;; " -g -lm "))
;; (message "Unknow mode, won't compile!")))))
;; (if (not (null command))
;; (let ((command (read-from-minibuffer "Compile command: " command)))
;; (compile command)))))
;shell,gdb退出后,自动关闭该buffer
(add-hook 'shell-mode-hook 'mode-hook-func)
(add-hook 'gdb-mode-hook 'mode-hook-func)
(defun mode-hook-func ()
(set-process-sentinel (get-buffer-process (current-buffer))
#'kill-buffer-on-exit))
(defun kill-buffer-on-exit (process state)
(message "%s" state)
(if (or
(string-match "exited abnormally with code.*" state)
(string-match "finished" state))
(kill-buffer (current-buffer))))
(add-to-list 'load-path "~/.emacs.d/auto-complete-1.3.1")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete-1.3.1/ac-dict")
(ac-config-default)
;;禁用启动画面
(setq inhibit-startup-message t)
;;尺寸
;;(setq initial-frame-alist '( (width . 93) (height . 36)))
(require 'unicad)
(load "desktop")
(desktop-load-default)
(desktop-read)
(menu-bar-left-scroll-bar)
(put 'narrow-to-page 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(global-set-key (kbd "M-@") 'set-mark-command)
(global-set-key (kbd "C-@") 'mark-word)
;(add-to-list 'load-path "~/.emacs.d/icicles")
;(require 'icicles)
;(icy-mode 1)
(require 'edit-server)
(edit-server-start)
;(global-set-key [(f9)] 'touming) ;;注意这行中的F8 , 可以改成你想要的按键
(setq alpha-list '((85 55) (100 100)))
(defun touming ()
(interactive)
(let ((h (car alpha-list)))
((lambda (a ab)
(set-frame-parameter (selected-frame) 'alpha (list a ab))
(add-to-list 'default-frame-alist (cons 'alpha (list a ab)))
) (car h) (car (cdr h)))
(setq alpha-list (cdr (append alpha-list (list h))))
)
)
;(add-to-list 'load-path "~/.emacs.d/matlab-emacs")
;(require 'matlab-load)
;(autoload 'matlab-mode "matlab" "Enter MATLAB mode." t)
;(setq auto-mode-alist (cons '("\\.m\\'" . matlab-mode) auto-mode-alist))
;(autoload 'matlab-shell "matlab" "Interactive MATLAB mode." t)
;(setq matlab-verify-on-save-flag nil) ; turn off auto-verify on save
;(defun my-matlab-mode-hook ()
; (setq fill-column 76)) ; where auto-fill should wrap
;(add-hook 'matlab-mode-hook 'my-matlab-mode-hook)
;(defun my-matlab-shell-mode-hook ()
; '())
;(add-hook 'matlab-shell-mode-hook 'my-matlab-shell-mode-hook)
(global-font-lock-mode t)
;(matlab-mode-hilit)
(autoload 'tlc-mode "tlc" "tlc Editing Mode" t)
(add-to-list 'auto-mode-alist '("\\.tlc{1}quot; . tlc-mode))
(setq tlc-indent-function t)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
;; 使用cperl-mode代替默认的perl-mode
(add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("perl" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode))
(add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode))
;; 缩进相关
(add-hook 'cperl-mode-hook 'n-cperl-mode-hook t)
(defun n-cperl-mode-hook ()
(setq cperl-indent-level 4)
(setq cperl-continued-statement-offset 0)
(setq cperl-extra-newline-before-brace t)
(set-face-background 'cperl-array-face "wheat")
(set-face-background 'cperl-hash-face "wheat")
)
(global-set-key (kbd "C-c l") 'tex-comment-current-line)
(fset 'tex-comment-current-line
"\C-e %")
;(require 'autopair)
;(autopair-global-mode) ;; to enable in all buffers
(require 'htmlize)
(require 'goto-last-change)
(global-set-key "\C-c l" 'goto-last-change)
;org-mode
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
(setq org-todo-keywords
'((sequence "TODO(t)" "|" "DONE(d)")
(sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")))
(setq org-log-done 'time)
(setq org-log-done 'note)
;当所有子项目都标记为Done的时候,父项目也被标记为Done
(defun org-summary-todo (n-done n-not-done)
"Swith entry to DONE when all subentries are done, to TODO otherwise."
(let (org-log-done org-log-states) ; turn off logging.
(org-todo (if (= n-not-done 0) "DONE" "TODO"))))
(setq org-tag-alist '(("@STL" . ?s) ("@OJ" . ?o) ("@Python" . ?p) ("@English" . ?e)))
;;abbrev
(setq abbrev-mode t)
(setq abbrev-file-name ;; tell emacs where to read abbrev
"~/.emacs.d/abbrev_defs") ;; definitions from...
(setq save-abbrevs t) ;; save abbrevs when files are saved
;; you will be asked before the abbreviations are saved
(quietly-read-abbrev-file) ;; reads the abbreviations file on startup
(if (file-exists-p abbrev-file-name)
(quietly-read-abbrev-file))
;;(require 'calendar)
(setq calendar-latitude +30.15)
(setq calendar-longitude +120.10)
(setq calendar-location-name "Hangzhou")
;; 设置阴历显示,在 calendar 上用 pC 显示阴历
(setq chinese-calendar-celestial-stem
["甲" "乙" "丙" "丁" "戊" "己" "庚" "辛" "壬" "癸"])
(setq chinese-calendar-terrestrial-branch
["子" "丑" "寅" "卯" "辰" "巳" "戊" "未" "申" "酉" "戌" "亥"])
(setq calendar-remove-frame-by-deleting t)
(setq calendar-week-start-day 1)
(setq mark-diary-entries-in-calendar t)
(setq mark-holidays-in-calendar nil)
(setq view-calendar-holidays-initially nil)
;;(setq mark-diary-entries-in-calendar t)
;;(setq mark-holidays-in-calendar t)
;;(setq view-calendar-holidays-initially nil)
;; my advice for exit-calendar : save and close the _diray buffer
(defadvice exit-calendar (before my-advice-close-diary ())
"save and close the _diary buffer to avoid open it when
starting emacs next time."
(let ((bf (find-file-noselect diary-file t)))
(and bf
(save-excursion
(with-current-buffer bf (save-buffer) (kill-buffer nil))))))
(ad-activate 'exit-calendar)
;;I don't care these holidays
(setq christian-holidays nil)
(setq hebrew-holidays nil)
(setq islamic-holidays nil)
(setq solar-holidays nil)
(setq general-holidays '((holiday-fixed 1 1 "元旦")
(holiday-fixed 2 14 "情人节")
(holiday-fixed 3 14 "白色情人节")
(holiday-fixed 4 1 "愚人节")
(holiday-fixed 5 1 "劳动节")
(holiday-float 5 0 2 "母亲节")
(holiday-fixed 6 1 "儿童节")
(holiday-float 6 0 3 "父亲节")
(holiday-fixed 7 1 "建党节")
(holiday-fixed 8 1 "建军节")
(holiday-fixed 9 10 "教师节")
(holiday-fixed 10 1 "国庆节")
(holiday-fixed 12 25 "圣诞节")))
;; settings for appt
(require 'appt)
;;(setq view-diary-entries-initially t)
(setq appt-issue-message t)
(setq appt-message-warning-time 3)
(setq appt-display-format 'window)
;;;planner
;(require 'planner)
;(global-set-key [(shift f1)] 'planner-create-task-from-buffer)
;(setq planner-publishing-directory "/home/godot/emacs/wiki/diary/plan")
;;;;;Start planner together with Calendar
;(planner-calendar-insinuate)
;(setq planner-calendar-show-planner-files t)
;(require 'remember-planner)
;(setq remember-handler-functions '(remember-planner-append))
;(setq remember-annotation-functions planner-annotation-functions)
;(require 'planner-accomplishments)
;(require 'planner-deadline)
;; 设置 calendar 的显示
;;(setq calendar-remove-frame-by-deleting t)
;;(setq calendar-week-start-day 1) ; 设置星期一为每周的第一天
;;(setq mark-diary-entries-in-calendar t) ; 标记calendar上有diary的日期
;;(setq mark-holidays-in-calendar t) ; 为了突出有diary的日期,calendar上不标记节日
;;(setq view-calendar-holidays-initially t) ; 打开calendar的时候不显示一堆节日
;; 去掉不关心的节日,设定自己在意的节日,在 calendar 上用 h 显示节日
;;---------------------------------------c和cpp环境设定------------------------------------------
;; (setq compile-command "make")
;; ;;emacs的默认compile命令是调用make -k,我把它改成了make。你也可以把它改成其他的,比如gcc之类的.
;; ;;把c语言风格设置为k&r风格
;; (add-hook 'c-mode-hook
;; '(lambda ()
;; (c-set-style "k&r")))
;; ;;把C++语言风格设置为stroustrup风格
;; (add-hook 'c++-mode-hook
;; '(lambda()
;; (c-set-style "k&r")))
;;(global-set-key (kbd "") 'compile)
;;(setq compile-command "mingw32-make.exe")
(global-set-key (kbd "") 'smart-compile)
(add-hook 'c-mode-hook 'linux-c-mode)
(add-hook 'c++-mode-hook 'linux-cpp-mode)
(defun linux-c-mode()
;; 将回车代替C-j的功能,换行的同时对齐
(define-key c-mode-map [return] 'newline-and-indent)
(interactive)
;; 设置C程序的对齐风格
(c-set-style "K&R")
;; 自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐
;(c-toggle-auto-state)
;; 此模式下,当按Backspace时会删除最多的空格
;(c-toggle-hungry-state)
;; TAB键的宽度设置为8
(setq c-basic-offset 4)
;; 在菜单中加入当前Buffer的函数索引
(imenu-add-menubar-index)
;; 在状态条上显示当前光标在哪个函数体内部
(which-function-mode)
)
(defun linux-cpp-mode()
(define-key c++-mode-map [return] 'newline-and-indent)
;(define-key c++-mode-map [(control c) (c)] 'compile)
(interactive)
(c-set-style "K&R")
;(c-toggle-auto-state)
;(c-toggle-hungry-state)
(setq c-basic-offset 4)
(imenu-add-menubar-index)
(which-function-mode)
)
;;智能编译
(defun smart-compile()
;; "比较智能的C/C++编译命令,如果当前目录有makefile则用make -k编译,否则,如果是
;;处于c-mode,就用gcc -Wall编译,如果是c++-mode就用g++ -Wall编译"
(interactive)
;; 查找 Makefile
(let ((candidate-make-file-name '("makefile" "Makefile" "GNUmakefile"))
(command nil))
(if (not (null
(find t candidate-make-file-name :key
'(lambda (f) (file-readable-p f)))))
(setq command "mingw32-make.exe -k ")
;; 没有找到 Makefile ,查看当前 mode 是否是已知的可编译的模式
(if (null (buffer-file-name (current-buffer)))
(message "Buffer not attached to a file, won't compile!")
(if (eq major-mode 'c-mode)
(setq command
(concat "gcc -g -Wall -o "
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
" "
(file-name-nondirectory buffer-file-name)
;; " -lm "
))
(if (eq major-mode 'c++-mode)
(setq command
(concat "g++ -g -Wall -o "
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
" "
(file-name-nondirectory buffer-file-name)
;; " -lm "
))
(if (eq major-mode 'fortran-mode)
(setq command
(concat "ifort "
;; (file-name-nondirectory buffer-file-name))
;; (file-name-sans-extension
(file-name-nondirectory buffer-file-name)
" -o "
))
(message "Unknow mode, won't compile!"))))))
(if (not (null command))
(let ((command (read-from-minibuffer "Compile command: " command)))
(compile command)))))
;;rect-mark.el 高亮选中矩形区域 还不知道有什么用,先不用了
;;(require 'rect-mark)
;;当 % 在括号上按下时,那么匹配括号,否则输入一个 %。你只需要在 .emacs 文件里加入这些东西就可以达到目的:
;;(global-set-key "%" 'match-paren)
;; (defun match-paren (arg)
;; "Go to the matching paren if on a paren; otherwise insert %."
;; (interactive "p")
;; (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
;; ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
;; (t (self-insert-command (or arg 1)))))
;;临时记号
;;有时你需要跳到另一个文件进行一些操作,然后很快的跳回来。你当然可以使用 bookmark 或者寄存器。但是这些实在是太慢了。你多想拥有vi那样的 ma, mb, 'a, 'b 的操作。现在你可以用几行 elisp 达到类似的目的:
(global-set-key "\C-cp" 'ska-point-to-register)
(global-set-key "\C-cn" 'ska-jump-to-register)
(defun ska-point-to-register()
"Store cursorposition _fast_ in a register.
Use ska-jump-to-register to jump back to the stored
position."
(interactive)
(setq zmacs-region-stays t)
(point-to-register 8))
(defun ska-jump-to-register()
"Switches between current cursorposition and position
that was stored with ska-point-to-register."
(interactive)
(setq zmacs-region-stays t)
(let ((tmp (point-marker)))
(jump-to-register 8)
(set-register 8 tmp)))
;;go-to-char
;;有了这段代码之后,当你按 C-c a x (x 是任意一个字符) 时,光标就会到下一个 x 处。再次按 x,光标就到下一个 x。比如 C-c a w w w w ..., C-c a b b b b b b ...
(defun wy-go-to-char (n char)
"Move forward to Nth occurence of CHAR.
Typing `wy-go-to-char-key' again will move forwad to the next Nth
occurence of CHAR."
(interactive "p\ncGo to char: ")
(search-forward (string char) nil nil n)
(while (char-equal (read-char)
char)
(search-forward (string char) nil nil n))
(setq unread-command-events (list last-input-event)))
(define-key global-map (kbd "C-c a") 'wy-go-to-char)
(global-set-key (kbd "") 'other-window)
(global-set-key (kbd "") 'ido-switch-buffer)
(global-set-key (kbd " ") 'gdb)
(global-set-key (kbd "C-c h f") 'v_hide_function)
(fset 'v_hide_function
[?\C-\M-a ?\C- ?\C-\M-e ?\C-p ?\C-e ?\C-c ?h ?r ?\C-g])
(global-set-key (kbd "C-;") 'v_c_comment_currentline)
(fset 'v_c_comment_currentline
"\355// ")