插件在百度空間中。
;;使用C-x C-e檢測配置的正確性
(global-linum-mode t);顯示行號
(setq column-number-mode t);顯示列號
(setq auto-image-file-mode t);讓Emacs可以直接打開和顯示圖片
(auto-compression-mode t);打開壓縮文件時自動解壓縮
;(setq global-font-lock-mode t);進行語法加亮
(setq x-select-enable-clipboard t);允許emacs和外部其他程序的粘貼
(setq mouse-yank-at-point t);使用鼠標中鍵可以粘貼
(set-scroll-bar-mode nil);;取消滾動欄
(tool-bar-mode nil);取消工具欄
;;;;;;;;;;;;;;;;;;;;;;;;;;;; 顯示時間設置 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(display-time-mode 1);;啓用時間顯示設置,在minibuffer上面的那個槓上
(setq display-time-24hr-format t);;時間使用24小時制
(setq display-time-day-and-date t);;時間顯示包括日期和具體時間
(setq display-time-use-mail-icon t);;時間欄旁邊啓用郵件設置
(setq display-time-interval 10);;時間的變化頻率,單位多少來着?
;;;;;;;;;;;;;;;;;;;;;;;;;;; 顯示時間設置結束 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setq visible-bell t)
;;關閉煩人的出錯時的提示聲
(setq inhibit-startup-message t)
;;關閉emacs啓動時的畫面
;(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 之外的模式中使用語法高亮。
(fset 'yes-or-no-p 'y-or-n-p)
;; 改變 Emacs 固執的要你回答 yes 的行爲。按 y 或空格鍵表示 yes,n 表示 no。
(ansi-color-for-comint-mode-on)
;真正shell-mode亂碼解決。
(setq default-fill-column 80)
;默認顯示 80列就換行
(setq default-fill-column 120)
;;把 fill-column 設爲 60. 這樣的文字更好讀
(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
;;設置缺省主模式是text,,並進入auto-fill次模式.而不是基本模式fundamental-mode
(show-paren-mode t);顯示括號匹配
(setq show-paren-style 'parenthesis)
;;括號匹配時可以高亮顯示另外一邊的括號,但光標不會煩人的跳到另一個括號處。
(mouse-avoidance-mode 'animate)
;;光標靠近鼠標指針時,讓鼠標指針自動讓開,別擋住視線。
;;;;;;;disable tip of the day
(setq ecb-tip-of-the-day nil)
(setq-default indent-tabs-mode nil)
(setq default-tab-width 4)
(setq tab-stop-list ())
;;不用 TAB 字符來indent, 這會引起很多奇怪的錯誤。編輯 Makefile 的時候也不用擔心,因爲 makefile-mode 會把 TAB 鍵設置成真正的 TAB 字符,並且加亮顯示的。
(setq-default make-backup-files nil);不要生成臨時文件
(setq backup-directory-alist '(("." . "~/.autosave")))
;;設置自動備份文件保存的目錄,以免把你的磁盤弄得亂七八糟(你可以
;;去掉這一行試試看:P ~/.autosave 表示 主目錄下的一個叫.autosave 的子目錄,
;;按照前面的方法設置主目錄。
;;最大化
(defun my-maximized ()
(interactive)
(x-send-client-message
nil 0 nil "_NET_WM_STATE" 32
'(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0))
(x-send-client-message
nil 0 nil "_NET_WM_STATE" 32
'(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0)))
(my-maximized)
;;自動插入匹配的括號
;;C/C++ mode
(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)
(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)
;;輸入左邊的括號,就會自動補全右邊的部分.包括(), "", [] , {} , 等等。
;;;;自動補齊
(defun my-indent-or-complete ();;;;如果在單詞中間就補齊,否則就是tab
(interactive)
(if (looking-at "\\>")
(hippie-expand nil)
(indent-for-tab-command))
)
(global-set-key [(control tab)] 'my-indent-or-complete)
;;;hippie的自動補齊策略,優先調用了senator的分析結果:
(autoload 'senator-try-expand-semantic "senator")
(setq hippie-expand-try-functions-list
'(
senator-try-expand-semantic
try-expand-dabbrev
try-expand-dabbrev-visible
try-expand-dabbrev-all-buffers
try-expand-dabbrev-from-kill
try-expand-list
try-expand-list-all-buffers
try-expand-line
try-expand-line-all-buffers
try-complete-file-name-partially
try-complete-file-name
try-expand-whole-kill
)
)
;;;; 當輸入"."或">"時,在另一個窗口中列出結構體或類的成員
;; (defun my-c-mode-cedet-hook ()
;; (local-set-key "." 'semantic-complete-self-insert)
;; (local-set-key ">" 'semantic-complete-self-insert))
;; (add-hook 'c-mode-common-hook 'my-c-mode-cedet-hook)
;; (add-hook 'c++-mode-commom-hook 'my-c-mode-cedet-hook)
;;配置CEDET
(load-file "~/.emacs.d/my_plus/cedet-1.0/common/cedet.el")
(semantic-load-enable-excessive-code-helpers)
(global-ede-mode t)
(require 'semantic-ia)
(require 'semantic-gcc)
(global-srecode-minor-mode 1)
(semantic-load-enable-semantic-debugging-helpers)
(global-set-key [f12] 'semantic-ia-fast-jump);代碼跳轉
;;
(global-set-key [S-f12]
(lambda ()
(interactive)
(if (ring-empty-p (oref semantic-mru-bookmark-ring ring))
(error "Semantic Bookmark ring is currently empty"))
(let* ((ring (oref semantic-mru-bookmark-ring ring))
(alist (semantic-mrub-ring-to-assoc-list ring))
(first (cdr (car alist))))
(if (semantic-equivalent-tag-p (oref first tag)
(semantic-current-tag))
(setq first (cdr (car (cdr alist)))))
(semantic-mrub-switch-tags first))))
;;代碼跳轉(跳回上次的位置)
(require 'eassist nil 'noerror)
(add-hook 'c-mode-common-hook
(lambda ()
(define-key c-mode-base-map [M-f12] 'eassist-switch-h-cpp)
));;;;;eassist.el就提供了一個在C++的頭文件和實現文件間跳轉
(setq eassist-header-switches
'(("h" . ("cpp" "cxx" "c++" "CC" "cc" "C" "c" "mm" "m"))
("hh" . ("cc" "CC" "cpp" "cxx" "c++" "C"))
("hpp" . ("cpp" "cxx" "c++" "cc" "CC" "C"))
("hxx" . ("cxx" "cpp" "c++" "cc" "CC" "C"))
("h++" . ("c++" "cpp" "cxx" "cc" "CC" "C"))
("H" . ("C" "CC" "cc" "cpp" "cxx" "c++" "mm" "m"))
("HH" . ("CC" "cc" "C" "cpp" "cxx" "c++"))
("cpp" . ("hpp" "hxx" "h++" "HH" "hh" "H" "h"))
("cxx" . ("hxx" "hpp" "h++" "HH" "hh" "H" "h"))
("c++" . ("h++" "hpp" "hxx" "HH" "hh" "H" "h"))
("CC" . ("HH" "hh" "hpp" "hxx" "h++" "H" "h"))
("cc" . ("hh" "HH" "hpp" "hxx" "h++" "H" "h"))
("C" . ("hpp" "hxx" "h++" "HH" "hh" "H" "h"))
("c" . ("h"))
("m" . ("h"))
("mm" . ("h"))));;;;填補eassist-switch-h-cpp擴展名不全的BUG
;(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
;(defun my-c-mode-common-hook()
(add-hook 'c-mode-common-hook
(lambda ()
;(define-key c-mode-base-map [M-S-f12] 'semantic-analyze-proto-impl-toggle);;;;;在函數和聲明和實現間跳轉,不是這個功能不是十分準確,一般在cpp中函數實現處想跳到函數聲明處正常,但是從聲明處跳到實現處的話cedet不一定能找到cpp文件的位置。
(define-key c-mode-base-map (kbd "M-n") 'semantic-ia-complete-symbol-menu);;;;;;代碼補全
))
;;;;;;;;;;;;;;配置ecb
(add-to-list 'load-path "~/.emacs.d/my_plus/ecb-2.40")
(require 'ecb)
(ecb-activate)
;;定製ecb窗口布局
(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-fix-window-size t)
'(ecb-layout-window-sizes nil)
'(ecb-options-version "2.40")
;; '(ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2))
'(ecb-windows-width 0.18))
;顏色配置
(add-to-list 'load-path "~/.emacs.d/my_plus")
(require 'color-theme)
(color-theme-initialize)
(color-theme-calm-forest)
(global-set-key [f1] 'shell) ; 進入shell
(global-set-key [S-f9] 'gdb) ; 調試
;(setq compile-command "g++ ") ; 編譯
(global-set-key [f9] 'compile)
;; c-mode公共設置
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
(defun my-c-mode-common-hook ()
(setq default-tab-width 4)
(setq tab-width 4)
(setq c-basic-offset 4)
(hs-minor-mode t)
(define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
(define-key c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
;;;最後兩行是代碼自動補齊的快捷鍵
)
(global-set-key [S-f10] 'comment-or-uncomment-region) ; 註釋 / 取消註釋
(global-set-key [f10] 'c-indent-line-or-region) ; 格式化代碼
;全屏
(defun my-fullscreen ()
(interactive)
(x-send-client-message
nil 0 nil "_NET_WM_STATE" 32
'(2 "_NET_WM_STATE_FULLSCREEN" 0))
;; (x-send-client-message
;; nil 0 nil "_NET_WM_STATE" 32
;; '(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
)
;; (my-fullscreen)
(global-set-key [f11] 'my-fullscreen) ; emacs全屏
;gdb快捷鍵設置
(add-hook 'gdb-mode-hook '(lambda ()
(define-key c-mode-base-map [(f5)] 'gud-go)
(define-key c-mode-base-map [(f7)] 'gud-step)
(define-key c-mode-base-map [(f8)] 'gud-next)
(define-key c-mode-base-map [(f6)] 'gud-cont)))
;;代碼摺疊
(global-set-key [f2] 'hs-toggle-hiding)
;;;auctex配置
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(add-hook 'LaTeX-mode-hook #'LaTeX-install-toolbar)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex) ; with AUCTeX LaTeX mode
(add-hook 'latex-mode-hook 'turn-on-reftex) ; with Emacs latex mode
(add-hook 'LaTeX-mode-hook (lambda()
(add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t))
(setq TeX-command-default "XeLaTeX")
(setq TeX-save-query nil )
(setq TeX-show-compilation t)
))
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(setq TeX-engine 'xetex)
(setq TeX-PDF-mode t)
;;;;;;;;;;;;weibo;;;;;;;;;;
;;;;;;使用M-x weibo-timeline
(add-to-list 'load-path "~/.emacs.d/my_plus/austin------weibo.emacs-0cf9784")
(require 'weibo)
;;;;;;保存上次emacs關閉時的狀態
(load "desktop")
(desktop-load-default)
(desktop-read)
;;當emacs退出時保存文件打開狀態
(add-hook 'kill-emacs-hook
'(lambda()(desktop-save "~/")))
;;;;;;;;;;;;;;;;w3m設置;;;;;;;;;;;;;;;;;
;; (add-to-list 'load-path "/usr/share/emacs/site-lisp/w3m/")
;; (require 'w3m)
;; (setq w3m-home-page "http://www.google.com.hk") ;設置主頁
;; (require 'mime-w3m)
;; ;設置顯示圖片
;; (setq w3m-default-display-inline-images t)
;; (setq w3m-default-toggle-inline-images t)
;; ;;顯示圖標
;; (setq w3m-show-graphic-icons-in-header-line t)
;; (setq w3m-show-graphic-icons-in-mode-line t)
;; ;;啓用cookie
;; (setq w3m-use-cookies t)
;; ;;設定w3m運行的參數,分別爲使用cookie和使用框架
;; (setq w3m-command-arguments '("-cookie" "-F"))
;; ;;;解決wrong type argument: stringp, nil問題
;; (setq debug-on-error t);;
我的emacs配置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.