2010年4月20日星期二

接下来是.emacs



(load-file "c:/.emacs-muse.el")
(load-file "c:/.emacs-wiki.el")
(load-file "c:/.calendar.el")

(add-to-list 'load-path "C:/Emacs23/lisp")
(add-to-list 'load-path "C:/Emacs23/lisp/mail")
(add-to-list 'load-path "C:/Emacs23/lisp/net")
(add-to-list 'load-path "C:/Emacs23/lisp/gnus")
(add-to-list 'load-path "C:/Emacs23/lisp/calc")
(add-to-list 'load-path "C:/Emacs23/lisp/toolbar")
(add-to-list 'load-path "C:/Emacs23/lisp/calendar")
(add-to-list 'load-path "C:/Emacs23/lisp/planner")
(add-to-list 'load-path "C:/Emacs23/lisp/auctex")
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/w3m")
(add-to-list 'load-path "C:/Emacs23/lisp/emacs-wiki")

(setq visible-bell t)
;;关闭烦人的出错时的提示声。
(setq inhibit-startup-message t)
;;关闭启动画面
(setq column-number-mode t)
;;显示列号。
(setq mouse-yank-at-point t)
;;不要在鼠标点击的那个地方插入剪贴板内容。我不喜欢那样,经常把我的文档搞的一团糟。我觉得先用光标定位,然后鼠标中键点击要好的多。不管你的光标在文档的那个位置,或是在 minibuffer,鼠标中键一点击,X selection 的内容就被插入到那个位置。
(setq kill-ring-max 200)
;;用一个很大的 kill ring. 这样防止我不小心删掉重要的东西。
(setq default-fill-column 60)
;;把 fill-column 设为 60. 这样的文字更好读。
(setq-default indent-tabs-mode nil)

(setq default-tab-width 8)
(setq 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 "[email protected]%b")
;;在标题栏显示buffer的名字
(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 version-control t)
(setq kept-new-versions 3)
(setq delete-old-versions t)
(setq kept-old-versions 2)
(setq dired-kept-versions 1)
;;设置一下备份时的版本控制,这样更加安全。

(require 'swbuff)
(global-set-key (kbd "") 'swbuff-switch-to-previous-buffer)
(global-set-key (kbd "") 'swbuff-switch-to-next-buffer)
(setq swbuff-exclude-buffer-regexps
'("^ " "\\*.*\\*"))

(setq swbuff-status-window-layout 'scroll)
(setq swbuff-clear-delay 1)
(setq swbuff-separator "|")
(setq swbuff-window-min-text-height 1)
(mapcar
(function (lambda (setting)
(setq auto-mode-alist
(cons setting auto-mode-alist))))
'(("\\.xml$".  sgml-mode)
("\\\.bash" . sh-mode)
("\\.rdf$".  sgml-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 "HongHao")
(setq user-mail-address "[email protected]")
;;设置有用的个人信息。这在很多地方有用。
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;;让 dired 可以递归的拷贝和删除目录。
(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)))))
;;如果在括号上按下%,则匹配括号,否则输入%
(load-library  "folding")
(declare (special fold-fold-on-startup
fold-keys-already-setup
))

(setq fold-fold-on-startup t)
(folding-mode-add-find-file-hook)

(setq fold-keys-already-setup nil)
(add-hook 'folding-mode-hook
(function (lambda()
(unless fold-keys-already-setup
(setq fold-keys-already-setup t)
(define-prefix-command 'ctl-f-folding-mode-prefix)
(define-key 'ctl-f-folding-mode-prefix "f" 'fold-fold-region)
(define-key  'ctl-f-folding-mode-prefix "e" 'fold-enter)
(define-key 'ctl-f-folding-mode-prefix "x" 'fold-exit)
(define-key  'ctl-f-folding-mode-prefix "b" 'fold-whole-buffer)
(define-key 'ctl-f-folding-mode-prefix "o" 'fold-open-buffer)
(define-key 'ctl-f-folding-mode-prefix "h" 'fold-hide)
(define-key 'ctl-f-folding-mode-prefix "s" 'fold-show)
(define-key 'ctl-f-folding-mode-prefix "t" 'fold-top-level)
(define-key 'ctl-f-folding-mode-prefix "f" 'fold-fold-region)
)
(local-set-key "\C-f" 'ctl-f-folding-mode-prefix))))

(fold-add-to-marks-list 'sgml-mode
"<!-- {"
"<!-- } -->" " --> ")
(fold-add-to-marks-list 'c-mode "/* <" "/* > */" "*/")
(fold-add-to-marks-list 'c++-mode
"//<" "//>" "")
(fold-add-to-marks-list 'LaTeX-mode "%%% {{{" "%%% }}}" " ")
(fold-add-to-marks-list 'latex2e-mode "%%% {{{" "%%% }}}" " ")
(fold-add-to-marks-list 'latex-mode "%%%% {{{" "%%%% }}}" " ")
(fold-add-to-marks-list 'BibTeX-mode "%%% {{{" "%%% }}}" " ")
(fold-add-to-marks-list 'lisp-mode ";;; {" ";;; }" "")
(fold-add-to-marks-list 'lex-mode" /* {{{ " " /* }}} */ " "*/")
(fold-add-to-marks-list 'html-mode "<!-- { " "<!-- } -->" "-->")
(fold-add-to-marks-list 'shell-script-mode "# {{{" "# }}}" nil)
(fold-add-to-marks-list 'sh-mode "# {{{ " "# }}}" nil)
;;代码折行显示

;;    (global-set-key [(control ?\.)] 'ska-point-to-register)
(global-set-key [(control ?\,)] '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)))

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

;;C-c a x 可以跳到下一个字母“x”处
(setq-default make-backup-files nil)
;;不对文件进行备份
(tool-bar-mode -1)

(setq font-lock-maximum-decoration t)
(transient-mark-mode t)

(setq table-html-table-attribute "border=\"0\" cellpadding=\"3\" cellspacing=\"1\" align=\"center\"");
(setq emacs-wiki-table-attributes "border=\"0\" cellpadding=\"3\" cellspacing=\"1\" align=\"center\"")

(setq outline-minor-mode-prefix [(control o)])

(load "desktop")
(desktop-load-default)
(desktop-read)
;;如果你想保存上次打开的文件记录,那么可以使用 desktop。这是 Emacs 自带的。你只需要加入以上设置,然后 M-x desktop-save。以后 Emacs 启动时就会打开你上次离开时的所有 buffer.

(require 'ibuffer)
(global-set-key (kbd "C-x C-b") 'ibuffer)
;;可以把 C-x C-b 那个普通的 buffer menu 换成非常方便的 ibuffer 啦

(require 'ido)
(ido-mode t)
;;非常方便的buffer切换。
;;你开始输入文件名,前缀匹配的文件和目录都会列在光标后面的表里。目录是红色的。
;;你可以使用 C-s,C-r 或者左右光标键在匹配的文件之间来回旋转,按上下光标可以在匹配的目录名之间旋转。
;;C-k 可以删除一个文件。别担心,当删除文件时,你会被要求做出明确的回答。
;;如果你按 C-p 就会启动部分匹配,而不是严格前缀匹配。这时只要文件名的一部分与你的输入匹配就会列在表中。
;;按 C-t 就会切换到正则表达式匹配方式,你输入的文字将被作为正则表达式对文件进行匹配。比如我输入 ".*el$" 就可以得到所有以 "el" 结尾的 文件列表。
;;另外,C-c 和 C-a 分别切换大小写匹配和忽略某些文件。
;;你访问过的目录都会被 ido 记住,你可以按 M-up 和 M-down切换以前访问过的目录,按 M-left 和 M-right 可以提出以前使用过的文件名。
;;C-b 就会切换到选择buffer模式。按 C-d 就会进入Dired.
;;由于方向键,backspace 和 C-f, C-b 都被作为其它用途了,所以如果你想把光标移动到行首修改一些东西,你必须按 C-e 进入编辑模式。

(setq swbuff-status-window-layout 'scroll)
(setq swbuff-clear-delay 1)
(setq swbuff-separator "|")
(setq swbuff-window-min-text-height 1)

(autoload 'table-insert "table" "WYGIWYS table editor")

(require 'recentf)
(recentf-mode 1)

(defun recentf-open-files-compl ()
(interactive)
(let* ((all-files recentf-list)
(tocpl (mapcar (function
(lambda (x) (cons (file-name-nondirectory x) x))) all-files))
(prompt (append '("File name: ") tocpl))
(fname (completing-read (car prompt) (cdr prompt) nil nil)))
(find-file (cdr (assoc-ignore-representation fname tocpl)))))

(global-set-key [(control x)(control r)] 'recentf-open-files-compl)

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

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

(global-set-key [(control ?\.)] 'ska-point-to-register)
(global-set-key [(control ?\,)] '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)))

(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)
(define-key global-map (kbd "C-z") 'set-mark-command)

(require 'session)
(add-hook 'after-init-hook 'session-initialize)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;  color theme                                                   ;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'color-theme)
(color-theme-deep-blue)

(autoload 'mmm-mode "mmm-mode" "Multiple Major Modes" t)
(autoload 'mmm-parse-buffer "mmm-mode" "Automatic MMM-ification" t)

(require 'setnu)
(setnu-mode t)

(require 'tabbar)
(tabbar-mode)
(global-set-key (kbd "") 'tabbar-backward-group)
(global-set-key (kbd "") 'tabbar-forward-group)
(global-set-key (kbd "") 'tabbar-backward)
(global-set-key (kbd "") 'tabbar-forward)

(setq tabbar-buffer-groups-function 'tabbar-buffer-ignore-groups)

(defun tabbar-buffer-ignore-groups (buffer)
"Return the list of group names BUFFER belongs to.
Return only one group for each buffer."
(with-current-buffer (get-buffer buffer)
(cond
((or (get-buffer-process (current-buffer))
(memq major-mode
'(comint-mode compilation-mode)))
'("Process")
)
((member (buffer-name)
'("*scratch*" "*Messages*"))
'("Common")
)
((eq major-mode 'dired-mode)
'("Dired")
)
((memq major-mode
'(help-mode apropos-mode Info-mode Man-mode))
'("Help")
)
((memq major-mode
'(rmail-mode
rmail-edit-mode vm-summary-mode vm-mode mail-mode
mh-letter-mode mh-show-mode mh-folder-mode
gnus-summary-mode message-mode gnus-group-mode
gnus-article-mode score-mode gnus-browse-killed-mode))
'("Mail")
)
(t
(list
"default"  ;; no-grouping
(if (and (stringp mode-name) (string-match "[^ ]" mode-name))
mode-name
(symbol-name major-mode)))
)

)))

(require 'swbuff)
(global-set-key (kbd "") 'swbuff-switch-to-previous-buffer)
(global-set-key (kbd "") 'swbuff-switch-to-next-buffer)
(setq swbuff-exclude-buffer-regexps
'("^ " "\\*.*\\*"))

(setq swbuff-status-window-layout 'scroll)
(setq swbuff-clear-delay 1)
(setq swbuff-separator "|")
(setq swbuff-window-min-text-height 1)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;    emacs can highlight words in different prog languages         ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'emacs-wiki-srctag)

(add-to-list 'emacs-wiki-src-tag-modes-alist
'("perl" . perl-mode)
'("java" . java-mode))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;    preview LaTex files                        ;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(load "auctex.el" nil t t)
;;;(load "preview-latex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(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)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;    with this fuction you can insert date easily                  ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun my-insert-date ()
(interactive)
(insert (format-time-string "%Y/%m/%d %H:%M:%S" (current-time))))

(global-set-key (kbd "C-c m d") 'my-insert-date)

(autoload 'thumbs "thumbs" "Preview images in a directory." t)
;;use thumbs to make Emacs as a image viewer

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;   use phpmode to write .php file                              ;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'php-mode)

(add-hook 'php-mode-user-hook 'turn-on-font-lock)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;   maximize Emacs when it starts                                ;;;;;
;;;;;;;;   this works only in Windows                                   ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;  使用我wb-line-number显示行号                              ;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(set-scroll-bar-mode nil)   ; no scroll bar, even in x-window syste
(require 'wb-line-number)
(wb-line-number-enable)

(setq-default truncate-partial-width-windows nil)
;;分屏显示时折行显示

;;(add-hook 'text-mode-hook 'turn-on-setnu-mode)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;以下为复制多行的函数,很方便的                                         ;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun my-move-line-up (p)                  ;;向上移动本行
"move current line up"
(interactive "p")
(let ((c (current-column)))
(beginning-of-line)
(kill-line 1)
(previous-line p)
(beginning-of-line)
(yank)
(previous-line 1)
(move-to-column c)))

(defun my-move-line-down (p)                ;;向下移动本行
"move current line down"
(interactive "p")
(let ((c (current-column)))
(beginning-of-line)
(kill-line 1)
(next-line p)
(beginning-of-line)
(yank)
(previous-line 1)
(move-to-column c)))

(defun my-dup-line-down ()                  ;;复制本行到下一行
"duplicate this line at next line"
(interactive)
(let ((c (current-column)))
(beginning-of-line)
(ue-select-line-down)
(beginning-of-line)
(yank)
(previous-line 1)
(move-to-column c)))

(defvar ue-selection-last-point nil
"Indicates whether to kill-append or kill-new")
(defvar ue-selection-total-lines 0
"Total number of lines appended so far to the last item in kill-ring")

(defun ue-selection-update-cont ()
"Update `ue-selection-last-point' variable"
(if (and this-command
(string= (format "%s" this-command)
"ue-select-line-down-continued"))
(setq ue-selection-last-point (point))
(setq ue-selection-total-lines 0)
(setq ue-selection-last-point  nil)))

(add-hook 'post-command-hook 'ue-selection-update-cont)

(defun ue-select-line-down-continued ()     ;;连续复制多行
"like Shift+down in UltraEdit, but do no selection.
Just put these continuous lines all toghether as a new item in kill-ring.
Messages will appear in minibuffer telling you how many lines were copied.
Continuous commands with no interruption append new lines to the item.
Any non-ue-select-line-down-continued command will stop gathering new lines
and make a new item in kill-ring.

post-command-hook is used in detecting the continuity of this command.
check `ue-selection-update-cont' and `post-command-hook'."
(interactive)
(let ((s (point)))
(setq next-line-add-newlines t)
(next-line 1)
(setq next-line-add-newlines nil)
(if (and ue-selection-last-point
(= (save-excursion
(when (> (count-lines (point-min) (point)) 1)
(previous-line 1))
(point))
ue-selection-last-point))
(progn
(kill-append (buffer-substring s (point)) nil)
(setq ue-selection-total-lines (1+ ue-selection-total-lines))
(message (format "%s lines copied" ue-selection-total-lines)))
(kill-new (buffer-substring s (point)))
(message "1 line copied")
;; some errors will cause post-command-hook deletion
;; so add-hook every time after we add the first line
(add-hook 'post-command-hook 'ue-selection-update-cont)
(setq ue-selection-total-lines 1))))

(defun ue-select-line-down ()
"like Shift+down in UltraEdit."
(interactive)
(let ((s (point)))
(setq next-line-add-newlines t)
(next-line 1)
(setq next-line-add-newlines nil)
(kill-new (buffer-substring s (point)))))

(global-set-key   [C-S-up]        'my-move-line-up)
(global-set-key   [C-S-down]      'my-move-line-down)
(global-set-key   [C-M-down]      'my-dup-line-down)
(global-set-key   [S-down]        'ue-select-line-down-continued)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;; 函数结束                                                              ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(autoload 'thumbs "thumbs" "Preview images in a directory." t)

(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(display-time)

没有评论:

发表评论