User:Justin545/.emacs
Appearance
;; -*- 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. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;(require 'desktop) ;;(require 'extraserv) (require 'tempbuf) (require 'php-mode) ;; 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. (require 'xcscope) (load "boshiamy") (load "boshiamy-cue") (load "zhuyin") (load "leim-list") (load "cemacs") ;; Override the incorrect language environment set in 'cemacs.el'. ;; `C-h v language-info-alist' should reveal valid values for function ;; `set-language-environment'. (set-language-environment "UTF-8") ;;;;;;;;;;;;;;;;;;;;;(setq inhibit-startup-screen t) ;; Correct the path in order to make the function `update-file-autoloads' valid. (setq-default source-directory "~/emacs/") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Custom 區塊 ;; ;; 由 `Custom' 所產生的程式碼,這些設定也可以透過 M-x customize-saved 來修改。如果想要移除某 ;; 個設定時,請勿直接從程式碼中移除,應該先執行 M-x customize-saved 然後點選欲刪除的設定項目 ;; 之 [State] 按鈕再選 Erase Customization 刪除 ;; ;; 一些常用的 Custom 命令: ;; ;; `M-x customize-option <RET> OPTION <RET>' ;; Set up a customization buffer with just one option, OPTION. ;; ;; `M-x customize-face <RET> FACE <RET>' ;; Set up a customization buffer with just one face, FACE. ;; ;; `M-x customize-group <RET> GROUP <RET>' ;; Set up a customization buffer with just one group, GROUP. ;; ;; `M-x customize-apropos <RET> REGEXP <RET>' ;; Set up a customization buffer with all the options, faces and ;; groups that match REGEXP. ;; ;; `M-x customize-changed-options <RET> VERSION <RET>' ;; 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. ;; (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 區塊 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; enable the following commands (put 'downcase-region 'disabled nil) (put 'narrow-to-region 'disabled nil) ;;(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) ;; 下面這段程式可以得到相似的結果 ;; ;; (or (assoc 'font default-frame-alist) ;; (push (cons 'font "fontset-standard") ;; default-frame-alist)) (set-default-font "fontset-standard") ;; (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)) ;; #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))) "]")))) ;; #1~#3 的目的是加上額外的 info 文件搜尋路徑,其中 #2 的路徑中應該要存放 `Emacs Lisp ;; Reference Manual' 的 info 檔,除此之外我們也將 Cygwin 以及 ELisp manual 這兩個項目加到 ;; Info Directory 中,加入的方法是將以下的文字附加到 <EmacsDir>/info/dir 檔的後面: ;; ;; External documents ;; * Emacs Lisp: (elisp). Emacs Lisp Reference Manual. ;; * Cygwin Info: (c:/PROGRAM FILES/cygwin/usr/info/dir). The Info Directory of ;; ;; 其中 <EmacsDir> 是 Emacs 所在的目錄 (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"))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; * the list below are some possible situations ;; ;; "\n\n\n" ;; "" ;; "aa" ;; "aa\n" ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (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)))))) ;; * any argument's value of this function can be nil (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))) ;; * date and time format: Fri, 13 Dec 1901 20:45:54 (Taiwan) (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))) ;; Enter command `M-x c-set-justin-style' in `c++-mode' to setup my indentation style for C++. (defun c-set-justin-style () (interactive) (c-add-style "justin" '("k&r" (c-basic-offset . 3))) (c-set-style "justin")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; 過時的程式碼 ;; ;;(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))) ;; 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)