我的.emacs.el

汇聚了一些大牛的配置,现在共享一下

效果图...点击放大

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Filename:      .emacs.el
;;
;; Description:
;;
;; Copyright (C) 2007,  貓の中秋
;; Created at:    Fri Apr  6 22:27:32 2007
;; Author:        貓の中秋 <bigsnake_net(at)hotmail(dot)com>
;;
;; Modified by:   貓の中秋 <bigsnake_net(at)hotmail(dot)com>
;; Modified at:   Mon Apr  9 20:30:46 2007
;;
;; Status:        Experimental, do not distribute.
;; Update count:  2
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;{{{ 基本加载路径

;;基本加载路径
(add-to-list 'load-path "~/.emacs.d")
(load "~/.emacs.d/subdirs")
(setq byte-compile-warnings nil)

;;}}}

;;{{{ 字体,颜色等

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;颜色主题
(require 'color-theme)
(color-theme-initialize)
(if window-system (color-theme-dark-blue2))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(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.
 '(default ((t (:stipple nil
                :background "#132b4a"
                :foreground "#ffffff"
                :inverse-video nil
                :box nil
                :strike-through nil
                :overline nil
                :underline nil
                :slant normal
                :weight normal
                :height 90
                :width normal
                :family "adobe-courier"))))
 '(ecb-analyse-face ((((class color) (background dark))
                      (:inherit ecb-default-highlight-face
                       :background "magenta3"))))
 '(ecb-direc×ies-general-face ((t nil)))
 '(ecb-his×y-general-face ((t nil)))
 '(ecb-method-non-semantic-face ((((class color) (background dark))
                                  (:inherit ecb-methods-general-face
                                   :foreground "brown1"))))
 '(ecb-sources-general-face ((t nil)))
 '(ecb-tag-header-face ((((class color) (background dark))
                         (:background "SeaGreen"))))
 '(ido-only-match ((((class color))
                    (:foreground "Green" :weight ultra-bold))))
 '(ido-subdir ((((min-colors 88) (class color))
                (:foreground "orange" :weight bold))))
 '(which-func ((((class color) (min-colors 88) (background dark))
                (:foreground "Green")))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(if window-system nil (set-face-attribute 'default t :background "black"))

;;}}}

;;{{{ 舒服的界面设置

(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 nil)
 '(ecb-options-version "2.32")
 '(ecb-source-path (quote ("~")))
 '(safe-local-variable-values
   (quote ((folded-file . t) (folding-internal-margins)))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; 界面设置

;字体设置
;; (create-fontset-from-fontset-spec
;;  "-adobe-courier-medium-r-normal-*-12-*-*-*-*-*-fontset-sans")
;; (set-fontset-font
;;  "fontset-default" nil
;;  "-*-simsun-*-*-*-*-12-*-*-*-*-*-iso10646-1" nil 'prepend)
;; (set-default-font "fontset-sans")
;; (setq default-frame-alist
;;       (append '((font . "fontset-sans")) default-frame-alist))
;关闭起动时的那个"开机画面"
(setq inhibit-startup-message t)
;关掉工具栏和滚动条
(tool-bar-mode -1)
(scroll-bar-mode -1)

;语法高亮
(require 'lazy-lock)
(setq lazy-lock-defer-on-scrolling t)
(setq font-lock-support-mode 'lazy-lock-mode)
(setq font-lock-maximum-decoration t)
(global-font-lock-mode t)
(require 'generic)
(require 'generic-x)
;在标题栏显示buffer的名字
(setq frame-title-format "emacs - %f")
;当有两个文件名相同的缓冲时使用前缀的目录名做 buffer名字
(setq uniquify-buffer-name-style 'forward)
;显示时间
(setq display-time-24hr-format t)
(setq display-time-interval 10)
(display-time)
;用yes/no代替y/n
(fset 'yes-or-no-p 'y-or-n-p)
;显示行列号
(line-number-mode t)
(column-number-mode t)

(require 'display-line-number)

(make-face 'my-display-line-number-face)
(copy-face 'default 'my-display-line-number-face)
(set-face-attribute 'my-display-line-number-face t
                    :foreground "cyan"
                    :background "#3c5473")
(setq display-line-number-face 'my-display-line-number-face)
(setq display-line-number-format "%3d ")
(global-set-key (kbd "s-n") 'display-line-number-mode)
;当行数超过一定数值不再显示行号
(setq line-number-display-limit 1000000)
;开关自动折行(Warp)
(setq truncate-partial-width-windows nil)
(setq-default truncate-lines t)
(global-set-key (kbd "s-w") 'toggle-truncate-lines)
;设置有用的个人信息
(setq user-full-name "貓の中秋")
(setq user-mail-address "bigsnake_net@hotmail.com")
;进入Shell
(global-set-key (kbd "s-s") 'shell)
;当使用M-x COMMAND后过1秒钟显示该 COMMAND 绑定的键
(setq suggest-key-bindings 1)

;;设置备份

(setq auto-save-interval 80)
(setq make-backup-files t)
(setq version-control t)
(setq kept-new-versions 3)
(setq kept-old-versions 1)
(setq delete-old-versions t)
(setq dired-kept-versions 1)

;;}}}

;;{{{ 编辑设置

;防止光标来回跳
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;当光标在行尾上下移动的时候,始终保持在行尾。
(setq track-eol t)
;防止页面滚动时跳动
(setq scroll-margin 3
      scroll-conservatively 10000)
;光标靠近鼠标指针时让鼠标指针自动让开
(mouse-avoidance-mode 'animate)
;中键粘贴
(setq mouse-yank-at-point t)
;支持emacs和外部程序的粘贴
(setq x-select-enable-clipboard t)
;可以直接打开和显示图片
(auto-image-file-mode t)
;缩进设置
(setq-default indent-tabs-mode nil)
(setq default-tab-width 8)
;设置 sentence-end 可以识别中文标点
(setq sentence-end "\\([。!?]\\|……\\|[.?!][]\"')}]*\\($\\|[ \t]\\)\\)[ \t\n]*")
;可以递归的使用 minibuffer。我经常需要这么做。
(setq enable-recursive-minibuffers t)
;按三次esc真烦
(global-set-key (kbd "C-<escape>") 'keyboard-escape-quit)

(setq sentence-end-double-space nil)
;大多数情况下,回车后是要缩进的
(global-set-key "\C-m" 'newline-and-indent)
(global-set-key (kbd "C-<return>") 'newline)
;Vim 的 o
(global-set-key (kbd "M-<return>") 'vi-open-next-line)
(defun vi-open-next-line (arg)
  "Move to the next line (like vi) and then opens a line."
  (interactive "p")
  (end-of-line)
  (open-line arg)
  (next-line 1)
  (indent-according-to-mode))
;启动进入text mode
(setq default-major-mode 'text-mode)
;redo
(require 'redo)
(global-set-key (kbd "C-+") 'redo)

;; ;;修正很不爽的翻页 见 http://ann77.stu.cdut.edu.cn/EmacsScrollPage.html
(require 'pager)
(global-set-key "\C-v"     'pager-page-down)
(global-set-key "\ev"      'pager-page-up)

;; 更强的搜索

;Always end searches at the beginning of the matching expression.
(defun bsn-goto-match-beginning ()
  "Use with isearch hook to end search at first char of match."
  (when isearch-forward (goto-char isearch-other-end)))
(add-hook 'isearch-mode-end-hook 'bsn-goto-match-beginning)
;C-s和C-r改成渐进正则表达式搜索
(global-set-key [(control s)] 'isearch-forward-regexp)
(global-set-key [(control r)] 'isearch-backward-regexp)

;;}}}

;;{{{ mark 相关

;高亮显示要拷贝的区域
(transient-mark-mode t)
;高亮矩形
(require 'rect-mark)
;mark 的键绑定
(global-set-key (kbd "s-SPC") 'set-mark-command)
(global-set-key (kbd "S-SPC") 'set-mark-command)
(global-set-key (kbd "C-x r s-SPC") 'rm-set-mark)
(global-set-key (kbd "C-x r S-SPC") 'rm-set-mark)
(global-set-key (kbd "C-x r C-x") 'rm-exchange-point-and-mark)

;;这个功能绑定在 C-c m 上。这个功能就是根据光标的所在位置,智能的选择一块区域,也就
;;是设置成为当前的 point 和 mark。这样就可以方便的拷贝或者剪切,或者交换他们的位
;;置。

;;如果当前光标在一个单词上,那么区域就是这个单词的开始和结尾分别。
;;如果当前光标在一个连字符上,那么就选择包含连字符的一个标识符。

;;这个两个的是有区别的,而且根据不同的 mode 的语法定义,连字符和单词的定义也不一样。
;;例如 C mode 下, abc_def_xxx , 如果光标停在 abc 上,那么就会选择 abc 这个单词。 如果
;;停在下划线上,那么就会选择 abc_def_xxx 。

;;如果当前光标在一个双引号,单引号,一个花括号,方括号,圆括号,小于号,或者大于号,
;;等等,那么就会选择他们对应的另一个括号之间的区域。 引号中的 escape 字符也是可以
;;自动识别的。嵌套关系也是可以识别的。这一点可以和 VIM 中的 % 的功能类比。

(defun wcy-mark-some-thing-at-point()
  (interactive)
  (let* ((from (point))
         (a (mouse-start-end from from 1))
         (start (car a))
         (end (cadr a))
         (goto-point (if (= from start )
                         end
                       start)))
    (if (eq last-command 'wcy-mark-some-thing-at-point)
        (progn
          ;; exchange mark and point
          (goto-char (mark-marker))
          (set-marker (mark-marker) from))
      (push-mark (if (= goto-point start) end start) nil t)
      (when (and (interactive-p) (null transient-mark-mode))
        (goto-char (mark-marker))
        (sit-for 0 500 nil))
      (goto-char goto-point))))
(define-key global-map (kbd "s-m") 'wcy-mark-some-thing-at-point)

;; 高级的killing和yanking
;没有选择任何东西时复制/剪切整行
(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)))))

;移动整行的功能
;meta+箭头移动行
(defun move-line (n)
  "Move the current line up or down by N lines."
  (interactive "p")
  (setq col (current-column))
  (beginning-of-line) (setq start (point))
  (end-of-line) (forward-char) (setq end (point))
  (let ((line-text (delete-and-extract-region start end)))
    (forward-line n)
    (insert line-text)
    ;; res×e point to original column in moved line
    (forward-line -1)
    (forward-char col)))

(defun move-line-up (n)
  "Move the current line up by N lines."
  (interactive "p")
  (move-line (if (null n) -1 (- n))))

(defun move-line-down (n)
  "Move the current line down by N lines."
  (interactive "p")
  (move-line (if (null n) 1 n)))
(global-set-key (kbd "M-<up>") 'move-line-up)
(global-set-key (kbd "M-<down>") 'move-line-down)
;设置删除纪录
(setq kill-ring-max 200)
(require 'browse-kill-ring+)
(global-set-key (kbd "s-k") 'browse-kill-ring)

;;}}}

;;{{{ buffer 和 窗格

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;buffer 管理

;窗格切割控制
;数字参数用M+num 可以输入
(global-set-key (kbd "C-1") 'delete-other-windows)
(global-set-key (kbd "C-2") 'split-window-vertically)
(global-set-key (kbd "C-3") 'split-window-horizontally)
(global-set-key (kbd "C-4") 'delete-window)

; 按下 C-x k 立即关闭掉当前的 buffer
(global-set-key "\C-xk" 'kill-this-buffer)

;ido 和 ibuffer
(require 'ibuffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)

(require 'ido)
(ido-mode t)
(setq ido-enable-tramp-completion t)
(setq ido-save-direc×y-list-file nil)

;tab栏
(require 'tabbar)
(tabbar-mode t)
(global-set-key (kbd "s-<up>") 'tabbar-backward-group)
(global-set-key (kbd "s-<down>") 'tabbar-forward-group)
(global-set-key (kbd "s-<left>") 'tabbar-backward)
(global-set-key (kbd "s-<right>") 'tabbar-forward)

;;窗格操作
;交换两个窗口内的 buffer
(defun transpose-windows (arg)
  "Transpose the buffers shown in two windows."
  (interactive "p")
  (let ((selec× (if (>= arg 0) 'next-window 'previous-window)))
    (while (/= arg 0)
      (let ((this-win (window-buffer))
            (next-win (window-buffer (funcall selec×))))
        (set-window-buffer (selected-window) next-win)
        (set-window-buffer (funcall selec×) this-win)
;         (select-window (funcall selec×)))         注释掉这行,我想交换buffer但光标不动
        )
      (setq arg (if (plusp arg) (1- arg) (1+ arg))))))
(global-set-key (kbd "s-x") 'transpose-windows)

;在窗格移来移去
;; Windmove 是在窗口之间移动的很好用的命令。默认是用 Shift+上下左右键移动。
(require 'windmove)
(when (featurep 'windmove)
  (global-set-key (kbd "S-<down>") 'windmove-down)
  (global-set-key (kbd "S-<up>") 'windmove-up)
  (global-set-key (kbd "S-<left>") 'windmove-left)
  (global-set-key (kbd "S-<right>") 'windmove-right)
  (windmove-default-keybindings))

;;}}}

;;{{{ dired

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;让dired 可以递归的拷贝和删除目录
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;这里以后将会有一大堆东西..占位
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;}}}

;;{{{ 编程设置

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq-default which-function-mode t)
; C/C++
(defun bsn-linux-c-mode()
  (define-key c++-mode-map [return] 'newline-and-indent)
  (define-key c-mode-map [return] 'newline-and-indent)
  (interactive)
  (require 'cc-mode)
  (c-set-style "K&R")
  ;;  (setq c-basic-offset 8)
  (c-toggle-auto-newline t)
  (c-toggle-hungry-state t)
  (imenu-add-menubar-index)
  (setq c-basic-offset 8)
  (folding-mode t)
  )
(add-hook 'c-mode-hook 'bsn-linux-c-mode)
(add-hook 'c++-mode-hook 'bsn-linux-c-mode)
; Pascal
(defun bsn-linux-pascal-mode()
  (setq pascal-indent-level 8)
  (setq pascal-case-indent 4)
  (folding-mode t)
  )
(add-hook 'pascal-mode-hook 'bsn-linux-pascal-mode)

;自动补全

(minibuffer-electric-default-mode t)
;启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp
(partial-completion-mode t)
;在minibuffer里启用自动补全函数和变量
(icomplete-mode t)

;;(setq-default abbrev-mode t)
(autoload 'sena×-try-expand-semantic "sena×")
(setq hippie-expand-try-functions-list
      '(
        sena×-try-expand-semantic
        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-line
        try-expand-list
        try-expand-line-all-buffers
        try-expand-list-all-buffers
        try-expand-whole-kill))
(global-set-key (kbd "C-/") 'hippie-expand)
(global-set-key (kbd "M-/") 'semantic-ia-complete-symbol)

;;}}}

;;{{{ 一些插件

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;{{{ auto-header

;;auto-header,自动添加文件头
(require 'auto-header)
(setq header-full-name "貓の中秋")
(setq header-email-address "bigsnake_net(at)hotmail(dot)com")
(setq header-update-on-save '(filename
                              modified
                              ;;counter
                              copyright
                              ))

(setq header-field-list '(
                          filename
                          blank
                          description
                          blank
                          copyright
                          author
                          created
                          blank
                          modified_by
                          modified
                          blank
                          status
                          update
                          blank
                          ))

;;如果header已存在,就更新update次數
(global-set-key (kbd "s-h") (lambda ()
                              (interactive)
                              (if (header-exists-p)
                                  (header-update-count)
                                (header-make t))))

;;}}}

;;{{{ 编程专用的插件集合

;;xcscope
(require 'xcscope)

;;cedet

;;semantic setting
(setq semantic-load-turn-everything-on t)
(require 'semantic)
(require 'semantic-load)
(require 'semantic-ia)
(require 'semanticdb)
(setq-default semanticdb-project-roots
              (list (expand-file-name "/")))
(setq-default semanticdb-persistent-path
              (list (expand-file-name "~/.emacs.d/semanticdb")))
(setq-default semanticdb-default-save-direc×y
              (expand-file-name "~/.emacs.d/semanticdb"))
(setq-default semanticdb-default-system-save-direc×y
              (expand-file-name "~/.emacs.d/semanticdb"))

(global-semanticdb-minor-mode 1)
;;(add-hook 'speedbar-load-hook (lambda () (require 'semantic-sb)))
(require 'semantic-sb)
(add-hook 'semantic-init-hooks (lambda ()
                                 (imenu-add-to-menubar "TOKENS")))
(setq-default semantic-idle-scheduler-idle-time 432000) ;不加这句cpu会飞到100%

;(add-hook 'ecb-activate-hook (lambda () (semantic-idle-summary-mode t)))

(require 'cogre)
(require 'speedbar)
(require 'ede)
(require 'eieio)
(require 'cedet)

;;ecb代码浏览器
(require 'ecb)
(setq ecb-tip-of-the-day nil)
(setq ecb-options-version "2.32")
;; (ecb-tree-truncate-line nil)
(setq ecb-truncate-long-names nil)
(setq ecb-windows-height 0.25)
(setq ecb-windows-width 0.25)
(global-set-key (kbd "<f12>") 'ecb-activate)     ;;定义F12键为激活ecb
(global-set-key (kbd "C-<f12>") 'ecb-deactivate) ;;定义Ctrl+F12为停止ecb

;;}}}

;;{{{ folding setting <--like this

;;华丽的代码折叠
(require 'folding)
(folding-mode-add-find-file-hook)
(global-set-key (kbd "s-f f") 'folding-mode)

(defun bsn-enter-folding ()
  (interactive)
  (move-end-of-line nil)
  (folding-shift-in)
  (beginning-of-buffer)
  )

(defun set-folding-mode-key-binding()
  (local-set-key (kbd "s-f e") 'bsn-enter-folding)
  (local-set-key (kbd "s-f q") 'folding-shift-out)
  (local-set-key (kbd "s-f h") 'folding-hide-current-entry)
  (local-set-key (kbd "s-f s") 'folding-show-current-entry)
  (local-set-key (kbd "s-f b h") 'folding-whole-buffer)
  (local-set-key (kbd "s-f b s") 'folding-open-buffer)
  (local-set-key (kbd "s-f t h") 'folding-hide-current-subtree)
  (local-set-key (kbd "s-f t s") 'folding-show-current-subtree)
  (local-set-key (kbd "s-f r") 'folding-fold-region)
  )

(add-hook 'folding-mode-hook 'set-folding-mode-key-binding)
;;}}}

;;{{{ 字典

;; 已废弃的字典方案

;; ;; 字典 http://www.cublog.cn/u/18537/showart_197033.html
;; (autoload 'dictionary-search "dictionary"
;;   "Ask for a word and search it in all dictionaries" t)
;; (autoload 'dictionary-match-words "dictionary"
;;   "Ask for a word and search all matching words in the dictionaries" t)
;; (autoload 'dictionary-lookup-definition "dictionary"
;;   "Unconditionally lookup the word at point." t)
;; (autoload 'dictionary "dictionary"
;;   "Create a new dictionary buffer" t)
;; (autoload 'dictionary-mouse-popup-matching-words "dictionary"
;;   "Display entries matching the word at the cursor" t)
;; (autoload 'dictionary-popup-matching-words "dictionary"
;;   "Display entries matching the word at the point" t)
;; (autoload 'dictionary-tooltip-mode "dictionary"
;;   "Display tooltips for the current word" t)
;; (autoload 'global-dictionary-tooltip-mode "dictionary"
;;   "Enable/disable dictionary-tooltip-mode for all buffers" t)
;; ;; key bindings
;; (global-set-key [mouse-3] 'dictionary-mouse-popup-matching-words)
;; ;(global-set-key "\C-c d s" 'dictionary-search)
;; ;(global-set-key "\C-c d m" 'dictionary-match-words)
;; (global-set-key (kbd "s-d") 'dictionary-lookup-definition)

;; (setq dictionary-server "localhost")

;; 基于sdcv (stardict cli) 的字典 http://code.google.com/p/sdcv-mode/

(require 'sdcv-mode)
(setq sdcv-dictionary-list '("朗道英汉字典5.0"))
(global-set-key (kbd "s-d") 'sdcv-search-current-word)

;;}}}

;;{{{ 缩写模式,emacs魔法

;; ensure abbrev mode is always on
(setq-default abbrev-mode t)

;; do not bug me about saving my abbreviations
(setq save-abbrevs nil)
(require 'msf-abbrev)
(setq msf-abbrev-verbose t) ;; optional
(setq msf-abbrev-root "~/.emacs.d/abbrevs")
(msf-abbrev-load)

(define-key fld-keymap (kbd "s-<return>") 'fld-cleanup-form-at-point)
(define-key fld-keymap (kbd "TAB") 'fld-next)
(define-key fld-keymap (kbd "S-TAB") 'fld-prev)
(define-key fld-keymap (kbd "<S-iso-lefttab>") 'fld-prev)
(define-key fld-choose-keymap (kbd "<menu>") 'fld-choose)                              

;;}}}

;最后加载..
;;{{{ 状态保存

;;session和desktop插件,需要放在最后
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
(require 'desktop)
(desktop-save-mode 1)

;;}}}

;;}}}
  1. Welcome ~

    Life is like a box of chocolates,
    you never know
    what you gonna get.


  2. 因为某原因, google blog 暂时停止更新..
    by AutumnCat, 2007-6-12
  3. 最新文章

  4. 最新评论

  5. 分类

  6. 归档