;============================ 語言環(huán)境字符集設(shè)置 =================================
;;這一部份主要用在linux 環(huán)境下,windows下沒什么作用
;; (set-language-environment ‘Chinese-GB)
;; (set-keyboard-coding-system ‘utf-8)
;; (set-clipboard-coding-system ‘utf-8)
;; (set-terminal-coding-system ‘utf-8)
;; (set-buffer-file-coding-system ‘utf-8)
;; (set-default-coding-systems ‘utf-8)
;; (set-selection-coding-system ‘utf-8)
;; (modify-coding-system-alist ‘process "*" ‘utf-8)
;; (setq default-process-coding-system ‘(utf-8 . utf-8))
;; (setq-default pathname-coding-system ‘utf-8)
;; (set-file-name-coding-system ‘utf-8)
;; (setq ansi-color-for-comint-mode t) ;;處理shell-mode亂碼,好像沒作用
;=========================== 語言環(huán)境字符集設(shè)置結(jié)束 ===============================
;============================ MS Windows環(huán)境下字體設(shè)置 ===========================
(setq default-frame-alist
(append
‘((font . "fontset-chinese")) default-frame-alist))
(create-fontset-from-fontset-spec
"-outline-Courier New-normal-r-normal-normal-13-97-96-96-c-*-fontset-chinese")
(set-fontset-font
"fontset-default" nil
"-outline-新宋體-normal-r-normal-normal-14-*-96-96-c-*-iso10646-1" nil ‘prepend)
(set-fontset-font
"fontset-chinese" ‘kana
"-outline-新宋體-normal-r-normal-normal-14-*-96-96-c-*-iso10646-1" nil ‘prepend)
(set-fontset-font
"fontset-chinese" ‘han
"-outline-新宋體-normal-r-normal-normal-14-*-96-96-c-*-iso10646-1" nil ‘prepend)
(set-fontset-font
"fontset-chinese" ‘cjk-misc
"-outline-新宋體-normal-r-normal-normal-14-*-96-96-c-*-iso10646-1" nil ‘prepend)
(set-fontset-font
"fontset-chinese" ‘symbol
"-outline-新宋體-normal-r-normal-normal-14-*-96-96-c-*-iso10646-1" nil ‘prepend)
(set-default-font "fontset-chinese")
;===========================MS Windows環(huán)境下字體設(shè)置結(jié)束 =========================
;============================ Linux環(huán)境下字體設(shè)置 =================================
;; (create-fontset-from-fontset-spec
;; "-*-courier-medium-r-normal-*-14-*-*-*-*-*-fontset-courier")
;; (set-default-font "fontset-courier")
;; (setq default-frame-alist
;; (append
;; ‘((font . "fontset-courier")) default-frame-alist))
;; (set-fontset-font
;; "fontset-default" nil
;; "-*-simsun-*-*-*-*-14-*-*-*-*-*-gb2312.1980-*" nil ‘prepend)
;; (set-fontset-font
;; "fontset-courier" ‘kana
;; "-*-simsun-*-*-*-*-14-*-*-*-*-*-gbk-0" nil ‘prepend)
;; (set-fontset-font
;; "fontset-courier" ‘han
;; "-*-simsun-*-*-*-*-14-*-*-*-*-*-gbk-0" nil ‘prepend)
;; (set-fontset-font
;; "fontset-courier" ‘cjk-misc
;; "-*-simsun-*-*-*-*-14-*-*-*-*-*-gbk-0" nil ‘prepend)
;============================ Linux環(huán)境下字體設(shè)置結(jié)束 ==============================
;;;;;;;;;;;;;;;;;;;;語言環(huán)境字體設(shè)置結(jié)束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;解決中英文混排不能正確fill的問題,好像沒什么用
;; (put-charset-property ‘chinese-cns11643-5 ‘nospace-between-words t)
;; (put-charset-property ‘chinese-cns11643-6 ‘nospace-between-words t)
;; (put-charset-property ‘chinese-cns11643-7 ‘nospace-between-words t)
;;;;;;;;;;;;;;;;;;;;;;;;;;; 設(shè)置窗口界面 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(set-foreground-color "grey")
(set-background-color "black")
(set-cursor-color "gold1")
(set-mouse-color "gold1")
(set-scroll-bar-mode nil)
;;取消滾動欄
;;(customize-set-variable ‘scroll-bar-mode ‘right))
;;設(shè)置滾動欄在窗口右側(cè),而默認是在左側(cè)
(tool-bar-mode nil)
;;取消工具欄
(setq default-frame-alist
‘((vertical-scroll-bars)
(top . 25)
(left . 45)
(width . 110)
(height . 40)
(background-color . "black")
(foreground-color . "grey")
(cursor-color . "gold1")
(mouse-color . "gold1")
(tool-bar-lines . 0)
(menu-bar-lines . 1)
(right-fringe)
(left-fringe)))
;; 設(shè)置另外一些顏色:語法高亮顯示的背景和主題,區(qū)域選擇的背景和主題,二次選擇的背景和選擇
(set-face-foreground ‘highlight "white")
(set-face-background ‘highlight "blue")
(set-face-foreground ‘region "cyan")
(set-face-background ‘region "blue")
(set-face-foreground ‘secondary-selection "skyblue")
(set-face-background ‘secondary-selection "darkblue")
;;;;;;;;;;;;;;;;;;;;;;;;;;;; 設(shè)置界面結(jié)束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;; 顯示時間設(shè)置 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(display-time-mode 1);;啟用時間顯示設(shè)置,在minibuffer上面的那個杠上
(setq display-time-24hr-format t);;時間使用24小時制
(setq display-time-day-and-date t);;時間顯示包括日期和具體時間
(setq display-time-use-mail-icon t);;時間欄旁邊啟用郵件設(shè)置
(setq display-time-interval 10);;時間的變化頻率,單位多少來著?
;;;;;;;;;;;;;;;;;;;;;;;;;;; 顯示時間設(shè)置結(jié)束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定制操作習慣;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;設(shè)置打開文件的缺省路徑
(setq default-directory "/")
;;ido的配置,這個可以使你在用C-x C-f打開文件的時候在后面有提示;
;;這里是直接打開了ido的支持,在emacs23中這個是自帶的.
(ido-mode t)
(setq visible-bell t)
;;關(guān)閉煩人的出錯時的提示聲
(setq inhibit-startup-message t)
;;關(guān)閉emacs啟動時的畫面
(setq gnus-inhibit-startup-message t)
;;關(guān)閉gnus啟動時的畫面
(fset ‘yes-or-no-p ‘y-or-n-p)
;; 改變 Emacs 固執(zhí)的要你回答 yes 的行為。按 y 或空格鍵表示 yes,n 表示 no。
(setq font-lock-maximum-decoration t)
(setq font-lock-global-modes ‘(not shell-mode text-mode))
(setq font-lock-verbose t)
(setq font-lock-maximum-size ‘((t . 1048576) (vm-mode . 5250000)))
;; 語法高亮。除 shell-mode 和 text-mode 之外的模式中使用語法高亮。
(setq column-number-mode t)
(setq line-number-mode t)
;;顯示行列號
(setq mouse-yank-at-point t)
;;不要在鼠標點擊的那個地方插入剪貼板內(nèi)容。我不喜歡那樣,經(jīng)常把我的文檔搞的一團糟。我覺得先用光標定位,然后鼠標中鍵點擊要好的多。不管你的光標在文檔的那個位置,或是在 minibuffer,鼠標中鍵一點擊,X selection 的內(nèi)容就被插入到那個位置。
(setq kill-ring-max 200)
;;設(shè)置粘貼緩沖條目數(shù)量.用一個很大的kill ring(最多的記錄個數(shù)). 這樣防止我不小心刪掉重要的東西
(setq-default auto-fill-function ‘do-auto-fill)
; Autofill in all modes;;
(setq default-fill-column 120)
;;把 fill-column 設(shè)為 60. 這樣的文字更好讀
(setq-default indent-tabs-mode nil)
(setq default-tab-width 8)
(setq tab-stop-list ())
;;不用 TAB 字符來indent, 這會引起很多奇怪的錯誤。編輯 Makefile 的時候也不用擔心,因為 makefile-mode 會把 TAB 鍵設(shè)置成真正的 TAB 字符,并且加亮顯示的。
(setq sentence-end "\\([。???]\\|……\\|[.?!][]\"‘)}]*\\($\\|[ \t]\\)\\)[ \t\n]*")
(setq sentence-end-double-space nil)
;;設(shè)置 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)
(add-hook ‘text-mode-hook ‘turn-on-auto-fill)
;;設(shè)置缺省主模式是text,,并進入auto-fill次模式.而不是基本模式fundamental-mode
(setq show-paren-mode t) ;;打開括號匹配顯示模式
(setq show-paren-style ‘parenthesis)
;;括號匹配時可以高亮顯示另外一邊的括號,但光標不會煩人的跳到另一個括號處。
(setq mouse-avoidance-mode ‘a(chǎn)nimate)
;;光標靠近鼠標指針時,讓鼠標指針自動讓開,別擋住視線。
(setq frame-title-format "emacs@%b")
;;在標題欄顯示buffer的名字,而不是 emacs@wangyin.com 這樣沒用的提示。
(setq uniquify-buffer-name-style ‘forward);;好像沒起作用
;; 當有兩個文件名相同的緩沖時,使用前綴的目錄名做 buffer 名字,不用原來的foobar<?> 形式。
(setq auto-image-file-mode t)
;;讓 Emacs 可以直接打開和顯示圖片。
;(auto-compression-mode 1)
;打開壓縮文件時自動解壓縮。
(setq global-font-lock-mode t)
;;進行語法加亮。
(setq-default kill-whole-line t)
;; 在行首 C-k 時,同時刪除該行。
(add-hook ‘comint-output-filter-functions
‘comint-watch-for-password-prompt)
;;當你在shell、telnet、w3m等模式下時,必然碰到過要輸入密碼的情況,此時加密顯出你的密碼
;; (setq version-control t);;啟用版本控制,即可以備份多次
;; (setq kept-old-versions 2);;備份最原始的版本兩次,及第一次編輯前的文檔,和第二次編輯前的文檔
;; (setq kept-new-versions 1);;備份最新的版本1次,理解同上
;; (setq delete-old-versions t);;刪掉不屬于以上3中版本的版本
;; (setq backup-directory-alist ‘(("." . "~/backups")));;設(shè)置備份文件的路徑
;; (setq backup-by-copying t);;備份設(shè)置方法,直接拷貝
;; Emacs 中,改變文件時,默認都會產(chǎn)生備份文件(以 ~ 結(jié)尾的文件)。可以完全去掉
;; (并不可取),也可以制定備份的方式。這里采用的是,把所有的文件備份都放在一
;; 個固定的地方("~/backups")。對于每個備份文件,保留最原始的兩個版本和最新的
;; 1個版本。并且備份的時候,備份文件是復(fù)本,而不是原件。
(setq make-backup-files nil)
;; 設(shè)定不產(chǎn)生備份文件
(setq auto-save-mode nil)
;;自動保存模式
(setq-default make-backup-files nil)
;; 不生成臨時文件
(put ‘scroll-left ‘disabled nil) ;允許屏幕左移
(put ‘scroll-right ‘disabled nil) ;允許屏幕右移
(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)
;;把這些缺省禁用的功能打開。
;;允許emacs和外部其他程序的粘貼
(setq x-select-enable-clipboard t)
(setq mouse-yank-at-point t)
;;使用鼠標中鍵可以粘貼
(setq user-full-name "XXXXXX")
(setq user-mail-address "XXXXXX@163.com")
;;設(shè)置有用的個人信息,這在很多地方有用。
(setq require-final-newline t)
;; 自動的在文件末增加一新行
(setq-default transient-mark-mode t)
;;Non-nil if Transient-Mark mode is enabled.
(setq track-eol t)
;; 當光標在行尾上下移動的時候,始終保持在行尾。
(setq Man-notify-method ‘pushy)
;; 當瀏覽 man page 時,直接跳轉(zhuǎn)到 man buffer。
(setq next-line-add-newlines nil)
;;Emacs 21 中已經(jīng)是缺省設(shè)置。按 C-n 或向下鍵時不添加新行。
(global-set-key [home] ‘beginning-of-buffer)
(global-set-key [end] ‘end-of-buffer)
;;設(shè)置home鍵指向buffer開頭,end鍵指向buffer結(jié)尾
(global-set-key (kbd "C-,") ‘scroll-left)
;; "C-,"設(shè)為屏幕左移命令
(global-set-key (kbd "C-.") ‘scroll-right)
;; "C-."設(shè)為屏幕右移命令
(global-set-key [f1] ‘manual-entry)
(global-set-key [C-f1] ‘info )
(global-set-key [f3] ‘repeat-complex-command)
(global-set-key [f4] ‘other-window)
;; 跳轉(zhuǎn)到 Emacs 的另一個buffer窗口
(defun du-onekey-compile ()
"Save buffers and start compile"
(interactive)
(save-some-buffers t)
(switch-to-buffer-other-window "*compilation*")
(compile compile-command))
(global-set-key [C-f5] ‘compile)
(global-set-key [f5] ‘du-onekey-compile)
;; C-f5, 設(shè)置編譯命令; f5, 保存所有文件然后編譯當前窗口文件
(global-set-key [f6] ‘gdb)
;;F6設(shè)置為在Emacs中調(diào)用gdb
(global-set-key [C-f7] ‘previous-error)
(global-set-key [f7] ‘next-error)
(defun open-eshell-other-buffer ()
"Open eshell in other buffer"
(interactive)
(split-window-vertically)
(eshell))
(global-set-key [(f8)] ‘open-eshell-other-buffer)
(global-set-key [C-f8] ‘eshell)
;;目的是開一個shell的小buffer,用于更方便地測試程序(也就是運行程序了),我經(jīng)常會用到。
;;f8就是另開一個buffer然后打開shell,C-f8則是在當前的buffer打開shell
(setq speedbar-show-unknown-files t);;可以顯示所有目錄以及文件
(setq dframe-update-speed nil);;不自動刷新,手動 g 刷新
(setq speedbar-update-flag nil)
(setq speedbar-use-images nil);;不使用 image 的方式
(setq speedbar-verbosity-level 0)
(global-set-key [f9] ‘speedbar)
;;設(shè)置f9調(diào)用speedbar命令
;;使用 n 和 p 可以上下移動,
;; + 展開目錄或文件進行瀏覽,- 收縮,RET 訪問目錄或文件,g 更新 speedbar。
(setq dired-recursive-copies ‘top)
(setq dired-recursive-deletes ‘top)
;;讓 dired 可以遞歸的拷貝和刪除目錄。
(global-set-key [C-f9] ‘dired)
;;設(shè)置[C-f9]為調(diào)用dired命令
(global-set-key [f10] ‘undo)
;;設(shè)置F10為撤銷
(global-set-key [f11] ‘calendar)
;;設(shè)置F11快捷鍵指定Emacs 的日歷系統(tǒng)
(global-set-key [f12] ‘list-bookmarks)
;;設(shè)置F12 快速察看日程安排
(setq time-stamp-active t)
(setq time-stamp-warn-inactive t)
(setq time-stamp-format "%:y-%02m-%02d %3a %02H:%02M:%02S chunyu")
;; 設(shè)置時間戳,標識出最后一次保存文件的時間。
(global-set-key (kbd "M-g") ‘goto-line)
;;設(shè)置M-g為goto-line
(global-set-key (kbd "C-SPC") ‘nil)
;;取消control+space鍵設(shè)為mark
(global-set-key (kbd "M-<SPC>") ‘set-mark-command)
;;這樣 我就不用按 C-@ 來 setmark 了, C-@ 很不好按。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定制操作習慣結(jié)束;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 設(shè)置日歷 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;設(shè)置日歷的一些顏色
(setq calendar-load-hook
‘(lambda ()
(set-face-foreground ‘diary-face "skyblue")
(set-face-background ‘holiday-face "slate blue")
(set-face-foreground ‘holiday-face "white")))
;;設(shè)置我所在地方的經(jīng)緯度,calendar里有個功能是日月食的預(yù)測,和你的經(jīng)緯度相聯(lián)系的。
;; 讓emacs能計算日出日落的時間,在 calendar 上用 S 即可看到
(setq calendar-latitude +39.54)
(setq calendar-longitude +116.28)
(setq calendar-location-name "北京")
;; 設(shè)置陰歷顯示,在 calendar 上用 pC 顯示陰歷
(setq chinese-calendar-celestial-stem
["甲" "乙" "丙" "丁" "戊" "己" "庚" "辛" "壬" "癸"])
(setq chinese-calendar-terrestrial-branch
["子" "丑" "寅" "卯" "辰" "巳" "戊" "未" "申" "酉" "戌" "亥"])
;; 設(shè)置 calendar 的顯示
(setq calendar-remove-frame-by-deleting t)
(setq calendar-week-start-day 1) ; 設(shè)置星期一為每周的第一天
(setq mark-diary-entries-in-calendar t) ; 標記calendar上有diary的日期
(setq mark-holidays-in-calendar nil) ; 為了突出有diary的日期,calendar上不標記節(jié)日
(setq view-calendar-holidays-initially nil) ; 打開calendar的時候不顯示一堆節(jié)日
;; 去掉不關(guān)心的節(jié)日,設(shè)定自己在意的節(jié)日,在 calendar 上用 h 顯示節(jié)日
(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 "情人節(jié)")
(holiday-fixed 3 14 "白色情人節(jié)")
(holiday-fixed 4 1 "愚人節(jié)")
(holiday-fixed 5 1 "勞動節(jié)")
(holiday-float 5 0 2 "母親節(jié)")
(holiday-fixed 6 1 "兒童節(jié)")
(holiday-float 6 0 3 "父親節(jié)")
(holiday-fixed 7 1 "建黨節(jié)")
(holiday-fixed 8 1 "建軍節(jié)")
(holiday-fixed 9 10 "教師節(jié)")
(holiday-fixed 10 1 "國慶節(jié)")
(holiday-fixed 12 25 "圣誕節(jié)")))
;;Calendar模式支持各種方式來更改當前日期
;;(這里的“前”是指還沒有到來的那一天,“后”是指已經(jīng)過去的日子)
;; q 退出calendar模式
;; C-f 讓當前日期向前一天
;; C-b 讓當前日期向后一天
;; C-n 讓當前日期向前一周
;; C-p 讓當前日期向后一周
;; M-} 讓當前日期向前一個月
;; M-{ 讓當前日期向后一個月
;; C-x ] 讓當前日期向前一年
;; C-x [ 讓當前日期向后一年
;; C-a 移動到當前周的第一天
;; C-e 移動到當前周的最后一天
;; M-a 移動到當前月的第一天
;; M-e 多動到當前月的最后一天
;; M-< 移動到當前年的第一天
;; M-> 移動到當前年的最后一天
;;Calendar模式支持移動多種移動到特珠日期的方式
;; g d 移動到一個特別的日期
;; o 使某個特殊的月分作為中間的月分
;; . 移動到當天的日期
;; p d 顯示某一天在一年中的位置,也顯示本年度還有多少天。
;; C-c C-l 刷新Calendar窗口
;; Calendar支持生成LATEX代碼。
;; t m 按月生成日歷
;; t M 按月生成一個美化的日歷
;; t d 按當天日期生成一個當天日歷
;; t w 1 在一頁上生成這個周的日歷
;; t w 2 在兩頁上生成這個周的日歷
;; t w 3 生成一個ISO-SYTLE風格的當前周日歷
;; t w 4 生成一個從周一開始的當前周日歷
;; t y 生成當前年的日歷
;;EMACS Calendar支持配置節(jié)日:
;; h 顯示當前的節(jié)日
;; x 定義當天為某個節(jié)日
;; u 取消當天已被定義的節(jié)日
;; e 顯示所有這前后共三個月的節(jié)日。
;; M-x holiday 在另外的窗口的顯示這前后三個月的節(jié)日。
;; 另外,還有一些特殊的,有意思的命令:
;; S 顯示當天的日出日落時間(是大寫的S)
;; p C 顯示農(nóng)歷可以使用
;; g C 使用農(nóng)歷移動日期可以使用
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 日歷設(shè)置結(jié)束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 設(shè)置日記 ;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;
(setq diary-file "~/diary");; 默認的日記文件
(setq diary-mail-addr "getmails@163.com")
(add-hook ‘diary-hook ‘a(chǎn)ppt-make-list)
;;當你創(chuàng)建了一個‘~/diary‘文件,你就可以使用calendar去查看里面的內(nèi)容。你可以查看當天的事件,相關(guān)命令如下 :
;; d 顯示被選中的日期的所有事件
;; s 顯示所有事件,包括過期的,未到期的等等
;; 創(chuàng)建一個事件的樣例:
;; 02/11/1989
;; Bill B. visits Princeton today
;; 2pm Cognitive Studies Committee meeting
;; 2:30-5:30 Liz at Lawrenceville
;; 4:00pm Dentist appt
;; 7:30pm Dinner at George‘s
;; 8:00-10:00pm concert
;; 創(chuàng)建事件的命令:
;; i d 為當天日期添加一個事件
;; i w 為當天周創(chuàng)建一個周事件
;; i m 為當前月創(chuàng)建一個月事件
;; i y 為當前年創(chuàng)建一個年事件
;; i a 為當前日期創(chuàng)建一個周年紀念日
;; i c 創(chuàng)建一個循環(huán)的事件
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 設(shè)置日記結(jié)束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 自定義lisp包設(shè)置 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;=======================五筆輸入法設(shè)置======================
;; (add-to-list ‘load-path "~/lisp/wubi/wubi")
;; (require ‘wubi)
;; (register-input-method "chinese-wubi" "Chinese-GB" ‘quail-use-package "wubi" "wubi")
;; (wubi-load-local-phrases)
;; (setq default-input-method "chinese-wubi")
;;這幾句Lisp代碼的作用是設(shè)置中文環(huán)境、注冊五筆字型輸入法。保存.emacs后請重新啟動emacs,
;;使得上面的設(shè)置生效?,F(xiàn)在您可以用快捷鍵C-\ (同時按住 Ctrl和反斜線鍵)喚出五筆字型輸入法了。
;;在emacs的mode line上會出現(xiàn)“五筆字型”的字樣。
;=======================五筆輸入法設(shè)置結(jié)束===================
;======================= cscope 設(shè)置 =======================
;;使用 cscope 瀏覽源代碼,這個xcscope是個改進版,為每一次查找的結(jié)果使用不同 buffer ,
;;這樣就可以保存以前的結(jié)果。
(add-to-list ‘load-path "~/lisp/xcscope") ;; 將軟件包所在的路徑加到 EMACS 的 load-path
(require ‘xcscope) ;; 加載相應(yīng)的軟件
;; C-c s a 設(shè)定初始化的目錄,一般是你代碼的根目錄
;; C-s s I 對目錄中的相關(guān)文件建立列表并進行索引
;; C-c s s 序找符號
;; C-c s g 尋找全局的定義
;; C-c s c 看看指定函數(shù)被哪些函數(shù)所調(diào)用
;; C-c s C 看看指定函數(shù)調(diào)用了哪些函數(shù)
;; C-c s e 尋找正則表達式
;; C-c s f 尋找文件
;; C-c s i 看看指定的文件被哪些文件include
;===================== cscope 設(shè)置結(jié)束 ======================
;======================== tabbar設(shè)置 ========================
(add-to-list ‘load-path "~/lisp/tabbar")
(require ‘tabbar)
(tabbar-mode)
;========================tabbar設(shè)置結(jié)束=======================
;======================= wb-line-number設(shè)置 ==================
;;增加一個顯示行號的buffer
;(add-to-list ‘load-path "~/lisp/wb-line-number")
;(require ‘wb-line-number)
;(wb-line-number-enable)
;====================== wb-line-number設(shè)置結(jié)束 ================
;======================= setnu設(shè)置 ============================
;;再增加一個顯示行號的功能
(add-to-list ‘load-path "~/lisp/setnu")
(require ‘setnu)
(global-set-key [f2] (quote setnu-mode))
;======================= setnu設(shè)置結(jié)束 =====================
;====================== rect-mark設(shè)置 =========================
;; 按下shift拖拽鼠標即可選擇矩形區(qū)域
;; Support for marking a rectangle of text with highlighting.
(add-to-list ‘load-path "~/lisp/rect-mark")
(require ‘rect-mark)
(define-key ctl-x-map "r\C-@" ‘rm-set-mark)
(define-key ctl-x-map [?r ?\C-\ ] ‘rm-set-mark)
(define-key ctl-x-map "r\C-x" ‘rm-exchange-point-and-mark)
(define-key ctl-x-map "r\C-w" ‘rm-kill-region)
(define-key ctl-x-map "r\M-w" ‘rm-kill-ring-save)
(define-key global-map [S-down-mouse-1] ‘rm-mouse-drag-region)
(autoload ‘rm-set-mark "rect-mark"
"Set mark for rectangle." t)
(autoload ‘rm-exchange-point-and-mark "rect-mark"
"Exchange point and mark for rectangle." t)
(autoload ‘rm-kill-region "rect-mark"
"Kill a rectangular region and save it in the kill ring." t)
(autoload ‘rm-kill-ring-save "rect-mark"
"Copy a rectangular region to the kill ring." t)
(autoload ‘rm-mouse-drag-region "rect-mark"
"Drag out a rectangular region with the mouse." t)
;; Use this section in your "~/.emacs" to modify picture mode so that
;; it automatically uses the rect-mark equivalents of many commands.
;; One vision of a better picture mode.
(add-hook ‘picture-mode-hook ‘rm-example-picture-mode-bindings)
(autoload ‘rm-example-picture-mode-bindings "rect-mark"
"Example rect-mark key and mouse bindings for picture mode.")
;===================== rect-mark設(shè)置結(jié)束 =========================
;===================== info文件設(shè)置 ==============================
;;Info 的菜單是按 Info-directory-list 的順序列出的,而 Info-directory-list 是在啟動 info 時
;;用Info-default-directory-list 來初始的。所以要添加 Info 目錄是要設(shè)置 Info-default-directory-list。
;;在添加的 Info 目錄中,創(chuàng)建一個叫 dir 的文件(其實所有 Info-directory-list 里有一個文件就行了,
;;在 ${emacs}/info 文件夾下有這個文件,修改這個也可以)。
(add-to-list ‘Info-default-directory-list "~/lisp/info/")
;; n:跳轉(zhuǎn)到該節(jié)點的下一個節(jié)點;
;; p:跳轉(zhuǎn)到該節(jié)點的上一個節(jié)點;
;; m: 指定菜單名而選擇另外一個節(jié)點;
;; f:進入交叉引用主題;
;; l:進入該窗口中的最后一個節(jié)點;
;; TAB:跳轉(zhuǎn)到該窗口的下一個超文本鏈接;
;; RET:進入光標處的超文本鏈接;
;; u:轉(zhuǎn)到上一級主題;
;; d:回到 info 的初始節(jié)點目錄;
;; h:調(diào)出 info 教程;
;; q:退出 info。
;=================== info文件設(shè)置結(jié)束 ============================
;===================== AUCTeX設(shè)置 =================================
(load "~/lisp/auctex/site-lisp/auctex.el" nil t t)
(load "~/lisp/auctex/site-lisp/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)
;===================== AUCTeX設(shè)置結(jié)束 =============================
;===================== 文件頭header設(shè)置 ===========================
;;當我們保存文件的時候,有很多信息可以自動更新.如何自動更新信息, 更新那些信息,
;也是可以完全自己配置. 包括文件名稱,最后一次修改時間,文件保存次數(shù),最后一次修改的作者等等.
;;可以用 M-x make-header 自動生成文件頭信息.
(add-to-list ‘load-path "~/lisp/header")
(require ‘header)
(setq make-header-hooks ‘(header-mode-line
header-blank
header-file-name
header-blank
header-copyright
header-blank
header-author
header-creation-date
header-modification-author
header-modification-date
header-update-count
header-blank
header-history
header-blank
))
(setq header-copyright-notice " 源成工作室 作品" )
(make-local-variable ‘user-full-name)
(make-local-variable ‘user-mail-address)
;===================== 文件頭header設(shè)置結(jié)束 ==========================
;===================== template設(shè)置 =================================
(add-to-list ‘load-path "~/lisp/template")
(require ‘template)
(template-initialize)
;===================== template設(shè)置結(jié)束===============================
;===================== cedet設(shè)置 =====================================
(add-to-list ‘load-path "~/lisp/cedet-1.0pre3/speedbar")
(add-to-list ‘load-path "~/lisp/cedet-1.0pre3/eieio")
(add-to-list ‘load-path "~/lisp/cedet-1.0pre3/semantic")
(add-to-list ‘load-path "~/lisp/cedet-1.0pre3/common")
(require ‘cedet)
;; (add-to-list ‘load-path "~/lisp/ecb-2.32")
;; (require ‘ecb)
;; Ecb的操作:
;; C-c . g d 目錄列表窗口
;; C-c . g s 源碼窗口
;; C-c . g m 方法和變量窗口
;; C-c . g h 歷史窗口
;; C-c . g l 最后選擇過的編輯窗口
;; C-c . g 1 編輯窗口1
;; C-c . g n 編輯窗口n
;; C-c . l c 選擇版面
;; C-c . l r 重畫版面
;; C-c . l t 拴牢版面(鎖定版面)
;; C-c . l w 拴牢可見的ecb窗口
;; C-c . \ 拴牢編繹窗口
;; 其中l(wèi)為小寫字母(L),大家別看錯!!
;======================cedet設(shè)置結(jié)束==================================
;;;;;;;;;;;;;;;;;;;;;;;;;; 自定義lisp包設(shè)置結(jié)束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;===================== GNUS設(shè)置 =================================
(setq gnus-select-method ‘(nntp "news.yaako.com"))
(setq gnus-default-subscribed-newsgroups
‘( "cn.comp.os.linux")) ;;
;; (add-to-list ‘gnus-secondary-select-methods ‘(nntp "news.yourSecondProvider.net"))
;; (add-to-list ‘gnus-secondary-select-methods ‘(nntp "news.yourThirdProvider.net"))
;;想讓 Gnus 在多個的服務(wù)器上取新聞
;;中文相關(guān)
(set-language-environment ‘Chinese-GB)
(setq gnus-default-charset ‘chinese-iso-8bit
gnus-group-name-charset-group-alist ‘((".*" . chinese-iso-8bit))
gnus-summary-show-article-charset-alist
‘((1 . chinese-iso-8bit)
(2 . gbk)
(3 . big5)
(4 . utf-8))
gnus-newsgroup-ignored-charsets
‘(unknown-8bit x-unknown iso-8859-1))
(setq mail-sources
‘((pop :server "pop3.163.com" ;; 在這里設(shè)置pop3服務(wù)器
:user "XXXXXXX" ;; 用戶名
;; :port "110"
:password "XXXXXX"))) ;; 密碼
(setq gnus-secondary-select-methods ‘((nnfolder "")))
(setq user-full-name "XXXXXXXX") ;; 外發(fā)的郵件采用這個名字
(setq user-mail-address "XXXXXX@163.com") ;;外發(fā)的郵件采用這個地址
(setq smtpmail-auth-credentials
‘(("smtp.163.com" ;; SMTP服務(wù)器
25
"XXXXXX" ;; 用戶名
"XXXXXX"))) ;; 密碼
(setq smtpmail-default-smtp-server "smtp.163.com")
(setq smtpmail-smtp-server "smtp.163.com")
(setq message-send-mail-function ‘smtpmail-send-it)
(setq nnmail-expiry-wait 3);;Gnus 默認的保質(zhì)期是7天,如果你覺得時間不合適,可以自己設(shè)置
(add-hook ‘gnus-article-prepare-hook
(lambda ()
(setq fill-column 60)
(gnus-article-fill-long-lines)))
;;讓gnus把這種郵件排版整齊后再顯示給我們看
(add-hook ‘gnus-article-prepare-hook ‘gnus-article-date-local)
;;將郵件的發(fā)出時間轉(zhuǎn)換為本地時間
(gnus-add-configuration ‘(article
(vertical 1.0
(summary .4 point)
(article 1.0))))
;; 改變閱讀新聞時窗口的布局,窗口劃分為上4下6(比例)
(eval-after-load "mm-decode"
‘(progn
(add-to-list ‘mm-discouraged-alternatives "text/html")
(add-to-list ‘mm-discouraged-alternatives "text/richtext")))
;另外,有些用web方式發(fā)出的郵件里有html,加入下面的設(shè)置,只看其中的
;plain text部分:
(setq gnus-thread-sort-functions
‘(
(not gnus-thread-sort-by-date)
(not gnus-thread-sort-by-number)
))
;;排序
(add-hook ‘gnus-group-mode-hook ‘gnus-topic-mode)
;; 有時訂閱了很多新聞組,堆在一起不好管理。這個功能可以創(chuàng)建目錄來分層管理
(setq gnus-read-newsrc-file nil gnus-save-newsrc-file nil)
;======================== GNUS設(shè)置結(jié)束 ===============================
;;=========================== 方便編程操作的設(shè)置=====================================
(setq compile-command "make")
;;emacs的默認compile命令是調(diào)用make -k,我把它改成了make。你也可以把它改成其他的,比如gcc之類的.
;;把c語言風格設(shè)置為k&r風格
(add-hook ‘c-mode-hook
‘(lambda ()
(c-set-style "k&r")))
;;把C++語言風格設(shè)置為stroustrup風格
(add-hook ‘c++-mode-hook
‘(lambda()
(c-set-style "stroustrup")))
;========================================================================
(load-library "hideshow")
(add-hook ‘c-mode-hook ‘hs-minor-mode)
(add-hook ‘c++-mode-hook ‘hs-minor-mode)
(add-hook ‘java-mode-hook ‘hs-minor-mode)
(add-hook ‘perl-mode-hook ‘hs-minor-mode)
(add-hook ‘php-mode-hook ‘hs-minor-mode)
(add-hook ‘emacs-lisp-mode-hook ‘hs-minor-mode)
;;能把一個代碼塊縮起來,需要的時候再展開
;; M-x hs-minor-mode
;; C-c @ ESC C-s show all
;; C-c @ ESC C-h hide all
;; C-c @ C-s show block
;; C-c @ C-h hide block
;; C-c @ C-c toggle hide/show
;========================================================================
(defun my-c-mode-auto-pair ()
(interactive)
(make-local-variable ‘skeleton-pair-alist)
(setq skeleton-pair-alist ‘(
(?` ?` _ "‘‘")
(?\( ? _ " )")
(?\[ ? _ " ]")
(?{ \n > _ \n ?} >)))
(setq skeleton-pair t)
(local-set-key (kbd "(") ‘skeleton-pair-insert-maybe)
(local-set-key (kbd "{") ‘skeleton-pair-insert-maybe)
(local-set-key (kbd "`") ‘skeleton-pair-insert-maybe)
(local-set-key (kbd "[") ‘skeleton-pair-insert-maybe))
(add-hook ‘c-mode-hook ‘my-c-mode-auto-pair)
(add-hook ‘c++-mode-hook ‘my-c-mode-auto-pair)
;;輸入左邊的括號,就會自動補全右邊的部分.包括(), "", [] , {} , 等等。
;=========================================================================
(setq semantic-load-turn-everything-on t)
;(add-hook ‘semantic-init-hooks ‘semantic-idle-completions-mode)
(setq semanticdb-project-roots
(list
(expand-file-name "/")))
;;配置Semantic的檢索范圍
(setq semanticdb-default-save-directory "~/")
;;設(shè)置semantic.cache路徑
(global-set-key [(meta ?/)] ‘hippie-expand)
;;M-/ 綁定到 hippie-expand
(autoload ‘senator-try-expand-semantic "senator")
(setq hippie-expand-try-functions-list
‘(senator-try-expand-semantic ;優(yōu)先調(diào)用了senator的分析結(jié)果
try-expand-dabbrev ;當前的buffer補全
try-expand-dabbrev-visible ;別的可見的窗口里尋找補全
try-expand-dabbrev-all-buffers ;所有打開的buffer
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))
;設(shè)置 hippie-expand 的補全方式。它是一個優(yōu)先列表, hippie-expand 會優(yōu)先使用表最前面的函數(shù)來補全。
;=========================================================================
;==========================================================================
;;========================== 方便編程操作設(shè)置結(jié)束====================================