我的emacs配置

插件在百度空間中。

;;使用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);;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章