User:Justin545/.emacs


 * -*- coding:big5; -*-


 * * 如果在執行某個外部程式時，Emacs 出現找不到程式的錯誤，那麼你可以調整變數 `exec-path' 的
 * 值或是在 autoexec.bat 中設定 `path' 環境變數以使得該程式的路徑被包含進來
 * * 關於 coding system：
 * code:         a code stands for a font, the map between codes and fonts is
 * described by a coding system
 * coding system: describe how codes are mapped to fonts
 * display code: draw the corresponding font for the code on screen by a coding system
 * coding:       map(convert) emacs-mule code to other code
 * decoding:     map(convert) other code to emacs-mule code
 * * 關於 Desktop 的設定
 * The first time you save the state of the Emacs session, you must do it manually, with
 * the command `M-x desktop-save'(after you have run the command, it will ask you where
 * to save the desktop file). Once you have done that, exiting Emacs will save the state
 * again--not only the present Emacs session, but also subsequent sessions.
 * In order for Emacs to recover the state from a previous session, you must start it
 * with the same current directory as you used when you started the previous
 * session. This is because `desktop-read' looks in the current directory(and then the
 * home directory) for the file to read. This means that you can have separate saved
 * sessions in different directories; the directory in which you start Emacs will
 * control which saved session to use.
 * If you save a desktop file in your home directory it will act as a default desktop
 * when you start Emacs from a directory that doesn't have its own.
 * with the same current directory as you used when you started the previous
 * session. This is because `desktop-read' looks in the current directory(and then the
 * home directory) for the file to read. This means that you can have separate saved
 * sessions in different directories; the directory in which you start Emacs will
 * control which saved session to use.
 * If you save a desktop file in your home directory it will act as a default desktop
 * when you start Emacs from a directory that doesn't have its own.
 * when you start Emacs from a directory that doesn't have its own.

(require 'tempbuf) (require 'php-mode)
 * (require 'desktop)
 * (require 'extraserv)

(require 'xcscope)
 * You need to revert the buffer if the buffer is read from the source file before `xcscope'
 * is loaded/required, or cscope may not take effect in that buffer.

(load "boshiamy") (load "boshiamy-cue") (load "zhuyin") (load "leim-list") (load "cemacs")

(set-language-environment "UTF-8")
 * Override the incorrect language environment set in 'cemacs.el'.
 * `C-h v language-info-alist' should reveal valid values for function
 * `set-language-environment'.


 * (setq inhibit-startup-screen t)

(setq-default source-directory "~/emacs/")
 * Correct the path in order to make the function `update-file-autoloads' valid.


 * Custom 區塊
 * 由 `Custom' 所產生的程式碼，這些設定也可以透過 M-x customize-saved 來修改. 如果想要移除某
 * 個設定時，請勿直接從程式碼中移除，應該先執行 M-x customize-saved 然後點選欲刪除的設定項目
 * 之 [State] 按鈕再選 Erase Customization 刪除
 * 一些常用的 Custom 命令：
 * `M-x customize-option  OPTION '
 * Set up a customization buffer with just one option, OPTION.
 * `M-x customize-face  FACE '
 * Set up a customization buffer with just one face, FACE.
 * `M-x customize-group  GROUP '
 * Set up a customization buffer with just one group, GROUP.
 * `M-x customize-apropos  REGEXP '
 * Set up a customization buffer with all the options, faces and
 * groups that match REGEXP.
 * `M-x customize-changed-options  VERSION '
 * Set up a customization buffer with all the options, faces and
 * groups whose meaning has changed since Emacs version VERSION.
 * `M-x customize-saved'
 * Set up a customization buffer containing all options and faces
 * that you have saved with customization buffers.
 * `M-x customize-customized'
 * Set up a customization buffer containing all options and faces
 * that you have customized but not saved.
 * `M-x customize-changed-options  VERSION '
 * Set up a customization buffer with all the options, faces and
 * groups whose meaning has changed since Emacs version VERSION.
 * `M-x customize-saved'
 * Set up a customization buffer containing all options and faces
 * that you have saved with customization buffers.
 * `M-x customize-customized'
 * Set up a customization buffer containing all options and faces
 * that you have customized but not saved.
 * Set up a customization buffer containing all options and faces
 * that you have customized but not saved.

(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. '(backup-directory-alist (quote (("." . "~/backup")))) '(column-number-mode t) '(default-input-method "boshiamy ") '(delete-selection-mode t nil (delsel)) '(desktop-save-mode nil nil (desktop)) '(ecb-layout-window-sizes (quote (("jl3" (0.6682926829268293. 0.9821428571428571) (0.14146341463414633 . 0.30357142857142855) (0.2097560975609756 . 0.30357142857142855) (0.35121951219512193 . 0.42857142857142855) (0.35121951219512193 . 0.25)) ("jl2" (0.15609756097560976. 0.26785714285714285) (0.1951219512195122 . 0.26785714285714285) (0.35121951219512193 . 0.3392857142857143) (0.35121951219512193 . 0.19642857142857142) (0.35121951219512193 . 0.17857142857142858)) ("jl" (0.35121951219512193. 0.19642857142857142) (0.15609756097560976 . 0.26785714285714285) (0.1951219512195122 . 0.26785714285714285) (0.35121951219512193 . 0.3392857142857143) (0.35121951219512193 . 0.17857142857142858)) ("jj3" (0.22439024390243903. 0.26785714285714285) (0.22439024390243903 . 0.32142857142857145) (0.22439024390243903 . 0.39285714285714285)) ("jj1" (0.35121951219512193. 0.21428571428571427) (0.35121951219512193 . 0.125) (0.35121951219512193 . 0.125) (0.35121951219512193 . 0.23214285714285715) (0.35121951219512193 . 0.17857142857142858) (0.35121951219512193 . 0.10714285714285714))))) '(enable-extraserv-log nil) '(eol-mnemonic-dos "(DOS)") '(file-name-coding-system (quote utf-8-unix) t) '(global-font-lock-mode t nil (font-lock)) '(global-hl-line-mode t nil (hl-line)) '(iswitchb-mode t) '(latex-run-command "pdflatex") '(line-number-mode t) '(show-paren-delay 0) '(show-paren-mode t nil (paren)) '(show-paren-style (quote mixed)) '(tex-dvi-view-command "\"C:\\Program Files\\Adobe\\Acrobat 5.0\\Acrobat\\Acrobat.exe\"") '(transient-mark-mode t) '(truncate-lines t) '(truncate-partial-width-windows nil) '(x-select-enable-clipboard 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. )


 * Custom 區塊
 * Custom 區塊

(put 'downcase-region 'disabled nil) (put 'narrow-to-region 'disabled nil)
 * enable the following commands


 * (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))
 * (extraserv-start)
 * (extraserv-start)
 * (extraserv-start)

(set-default-font "fontset-standard")
 * 下面這段程式可以得到相似的結果
 * (or (assoc 'font default-frame-alist)
 * (push (cons 'font "fontset-standard")
 * default-frame-alist))
 * default-frame-alist))


 * (add-hook 'dired-mode-hook 'turn-on-tempbuf-mode)
 * (add-hook 'custom-mode-hook 'turn-on-tempbuf-mode)
 * (add-hook 'w3-mode-hook 'turn-on-tempbuf-mode)
 * (add-hook 'Man-mode-hook 'turn-on-tempbuf-mode)
 * (add-hook 'view-mode-hook 'turn-on-tempbuf-mode)
 * (add-hook 'find-file-hooks 'turn-on-tempbuf-mode)
 * (turn-on-tempbuf-mode)


 * (set-frame-position (selected-frame)
 * (- (x-display-pixel-width) 390)
 * (- (x-display-pixel-height) 430))
 * (set-frame-size (selected-frame) 40 20)
 * (w32-maximize-frame)


 * * #1 等待 1.5 秒，以便讓 (w32-maximize-frame) 的動作完成
 * * fill-column 的設定要擺在調整視窗大小之後
 * (sleep-for 1.5) ; #1
 * (setq-default auto-fill-function 'do-auto-fill
 * fill-column (- (frame-width) 2))
 * fill-column (- (frame-width) 2))


 * #1 讓 Emacs 能與 clipboard 正常地交換繁體中文字可以參考 info 文件中的 `Specifying a Coding
 * System' 主題
 * (set-message-beep 'silent)
 * (set-selection-coding-system 'utf-8-unix) ; #1

(setq-default frame-title-format             '((:eval (concat "## GNU Emacs ## -- [" (cond (buffer-file-name buffer-file-name)                                    ((and (boundp 'dired-directory)                                           dired-directory) dired-directory)                                    (t (buffer-name))) "]"))))

(if (not (boundp 'Info-additional-directory-list))   (setq-default Info-additional-directory-list nil)) (setq-default Info-additional-directory-list             (append Info-additional-directory-list '("c:/Program Files/emacs-21.2/info/elisp/"                       "~/cygwin/usr/info/"                        "~/cygwin/usr/share/info")))
 * #1~#3 的目的是加上額外的 info 文件搜尋路徑，其中 #2 的路徑中應該要存放 `Emacs Lisp
 * Reference Manual' 的 info 檔，除此之外我們也將 Cygwin 以及 ELisp manual 這兩個項目加到
 * Info Directory 中，加入的方法是將以下的文字附加到 /info/dir 檔的後面：
 * External documents
 * * Emacs Lisp: (elisp). Emacs Lisp Reference Manual.
 * * Cygwin Info: (c:/PROGRAM FILES/cygwin/usr/info/dir). The Info Directory of
 * 其中  是 Emacs 所在的目錄
 * 其中  是 Emacs 所在的目錄
 * 其中  是 Emacs 所在的目錄

(defun delete-trailing-newline  (interactive)  (save-excursion (when (/= (point-min) (point-max))     (goto-char (point-max))      (goto-char (if (search-backward-regexp "[^\n]" (point-min) t 1)                     (1+ (point))                   (point-min)))      (delete-char (- (point-max) (point))))))
 * * the list below are some possible situations
 * "\n\n\n"
 * "aa"
 * "aa\n"
 * "\n\n\n"
 * "aa"
 * "aa\n"
 * "aa\n"

(defun normalize-blank (view-tab-width old-tab-width new-tab-width) (interactive)  (delete-trailing-whitespace)  (delete-trailing-newline)  (unless old-tab-width (setq old-tab-width 8)) (setq tab-width old-tab-width)  (untabify (point-min) (point-max))  (when new-tab-width (setq tab-width new-tab-width) (tabify (point-min) (point-max))) (when view-tab-width (setq tab-width view-tab-width)))
 * * any argument's value of this function can be nil

(defun insert-current-date-time (&optional area) (let ((weekday-abbr '((0. "Sun") (1. "Mon") (2. "Tue") (3. "Wed") (4. "Thu") (5. "Fri") (6. "Sat")))       (month-abbr '((1. "Jan") (2. "Feb") (3. "Mar") (4. "Apr") (5. "May") (6. "Jun") (7. "Jul") (8. "Aug") (9. "Sep") (10. "Oct") (11. "Nov") (12. "Dec")))       (curr-time (decode-time))) (setq area (if area (concat " (" area ")") "")) (insert (cdr (assoc (nth 6 curr-time) weekday-abbr))           (format ", %d " (nth 3 curr-time))            (cdr (assoc (nth 4 curr-time) month-abbr))            (format " %d %02d:%02d:%02d" (nth 5 curr-time) (nth 2 curr-time) (nth 1 curr-time) (nth 0 curr-time))            area)))
 * * date and time format: Fri, 13 Dec 1901 20:45:54 (Taiwan)

(defun c-set-justin-style  (interactive)  (c-add-style "justin" '("k&r" (c-basic-offset. 3))) (c-set-style "justin"))
 * Enter command `M-x c-set-justin-style' in `c++-mode' to setup my indentation style for C++.


 * 過時的程式碼
 * 過時的程式碼
 * 過時的程式碼


 * (defun insert-current-date-time (&optional area)
 * (let ((weekday-abbr '(("0" . "Sun") ("1" . "Mon") ("2" . "Tue") ("3" . "Wed") ("4" . "Thu") ("5" . "Fri") ("6" . "Sat")))
 * (month-abbr '(("01" . "Jan") ("02" . "Feb") ("03" . "Mar") ("04" . "Apr") ("05" . "May") ("06" . "Jun") ("07" . "Jul") ("08" . "Aug") ("09" . "Sep") ("10" . "Oct") ("11" . "Nov") ("12" . "Dec"))))
 * (setq area (if area (concat " (" area ")") ""))
 * (insert (cdr (assoc (format-time-string "%w") weekday-abbr))
 * (format-time-string ", %e ")
 * (cdr (assoc (format-time-string "%m") month-abbr))
 * (format-time-string "%Y %T")
 * area)))
 * area)))


 * show-paren-delay 的設定要放在 show-paren-mode 之前，否則可能無效
 * (setq-default show-paren-style 'mixed
 * show-paren-delay 0)
 * (show-paren-mode t)


 * (column-number-mode t)
 * (line-number-mode t)
 * (delete-selection-mode t)
 * (global-font-lock-mode t)
 * (global-hl-line-mode t)
 * (transient-mark-mode t)


 * (setq-default truncate-lines t
 * backup-directory-alist '(("." . "~/backup"))
 * eol-mnemonic-dos "(DOS)")


 * (setq-default frame-title-format
 * '("## GNU Emacs ## -- ["
 * (buffer-file-name "%f"
 * (dired-directory
 * dired-directory
 * "%b"))
 * "]"))


 * (setq-default frame-title-format
 * '("## GNU Emacs ## -- ["
 * (:eval (encode-coding-string (cond (buffer-file-name buffer-file-name)
 * ((and (boundp 'dired-directory)
 * dired-directory)
 * dired-directory)
 * (t (buffer-name)))
 * 'chinese-big5-dos))
 * "]"))


 * 使這一行生效可以窺得 emacs、extraserv 之間的通訊
 * (get-buffer-create log-buffer)

(put 'upcase-region 'disabled nil)
 * 過時的程式碼
 * 過時的程式碼