到现在, 这个 emacs 配置用着最爽
2011-06-27 09:02
246 查看
把下面的内容放到 ~/.emacs, 没有的插件自己GOOGLE, 实在找不到我也可以提供.
==============================================================
;;设置有用的个人信息
(setq user-full-name "Heng Liu")
(setq user-mail-address "liuhengloveyou@gmail.com")
;; 引入系统变量, 中文输入法需要
(setenv "LC_CTYPE" "zh_CN.utf-8")
(setenv "EDITOR" "/usr/bin/emacs")
;; 字体设置
(custom-set-faces '(default ((t (:slant normal :weight normal :height 83 :width normal)))))
(custom-set-variables
'(column-number-mode t)
'(ecb-options-version "2.32")
'(ecb-primary-secondary-mouse-buttons (quote mouse-1--C-mouse-1))
'(menu-bar-mode t)
'(scroll-bar-mode nil)
'(show-paren-mode t)
'(size-indication-mode t)
'(tool-bar-mode nil)
'(transient-mark-mode (quote (only . t))))
;;关闭启动画面
(setq inhibit-startup-message t)
;; 关闭出错时的蜂鸣提示声
(setq visible-bell t)
;; 尽快显示按键序列
(setq echo-keystrokes 0.1)
;; 用来显示当前光标在哪个函数
(which-func-mode 1)
(setq which-func-unknown "unknown func")
;; 父目录/buffer名,显示同名buffer
(setq uniquify-buffer-name-style 'forward)
;; 默认启用文本模式
(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
(setq enable-recursive-minibuffers t)
;; 单独跳出一个frame
(setq special-display-buffer-names '("*Help*" "*Apropos*"))
;; 显示行号
(global-linum-mode 1)
;;显示列号
(setq column-number-mode t)
;;默认显示 80列就换行
(setq default-fill-column 80)
;;在minibuffer里启用自动补全函数和变量
(icomplete-mode 1)
;;允许minibuffer自由变化其宽度大小
(setq resize-mini-windows t)
;;指针不要闪
(blink-cursor-mode -1)
;; Linux 下复制内容到系统的剪切板
(setq x-select-enable-clipboard t)
;; 启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp
(partial-completion-mode 1)
;;很大的 kill ring 方便的在 kill-ring 里寻找需要的东西
(setq kill-ring-max 200)
(defadvice yank-pop (around kill-ring-browse-maybe (arg))
"If last action was not a yank, run `browse-kill-ring' instead."
(if (not (eq last-command 'yank))
(browse-kill-ring)
ad-do-it))
(ad-activate 'yank-pop)
(global-set-key (kbd "C-c k") 'browse-kill-ring)
;; 设置书签文件
;; C-x r m Bookmark bookmark-set 设置一个名为 Bookmark 的书签
;; C-x r l bookmarks-bmenu-list 列出所有已保存的书签
;; C-x r b Bookmark bookmark-jump 跳转至名为 Bookmark 的书签中所设置的位置
;; bookmark-delete 删除一个书签
;; bookmark-save 将所有的书签保存到书签文件中
;; 跟书签功能类似的寄存器
;; C-x r space X point-to-register 将光标保存到寄存器 X
;; C-x r s X copy-to-register 将区域保存到寄存器 X
;; C-x r r X copy-rectangle-to-register 将选定的矩形区块保存到寄存器 X
;; view-register 查看一个给定的寄存器的内容
;; C-x r j X jump-to-register 将光标移动到寄存器 X 中给定的位置
;; C-x r i X insert-register 在光标处插入寄存器 X 的内容
(setq bookmark-default-file "~/.emacs.d/emacs.bmk")
;;设置缩略词的文件
(setq abbrev-file-name "~/.emacs.d/abbrev_defs")
;; 在emacs读man文档时,使用当前buffer
(setq Man-notify-method 'pushy)
;;启用备份
(setq version-control t)
;;备份最原始的版本两次,记第一次编辑前的文档,和第二次编辑前的文档
(setq kept-old-versions 2)
;;备份最新的版本5次,理解同上
(setq kept-new-versions 5)
;;删掉不属于以上7版本的版本
(setq delete-old-versions t)
;;设置备份文件的路径
(setq backup-directory-alist '(("." . "~/.emacs.d/backup")))
;;备份设置方法,直接拷贝
(setq backup-by-copying t)
;; 不产生备份文件
(setq make-backup-files nil)
;; 不产生备份
(setq backup-inhibited t)
;; 不生成名为#filename#的临时文件
(setq auto-save-default nil)
;; 自动保存
(setq auto-save-mode t)
;;自动重载更改的文件
(global-auto-revert-mode 1)
;;当鼠标移动的时候自动转换frame,window或者minibuffer
(setq mouse-autoselect-window t)
;;以 y/n代表 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;;将F10绑定为显示菜单栏
(global-set-key [(f10)] 'menu-bar-mode)
;;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线
(mouse-avoidance-mode 'animate)
;;支持emacs和外部程序的粘贴
(setq x-select-enable-clipboard t)
;; Tell Emacs fill commands to insert two after a colon
(setq colon-double-space t)
;; 在文档最后自动插入空白行
(setq require-final-newline t)
;;括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;;在标题栏显示buffer的名字.区分不同的主机和用户名称
(setq frame-title-format '((:eval (getenv-internal "LOGNAME"))"@"(:eval (system-name))":"(:eval (or (buffer-file-name) (buffer-name)))))
;; mode line上的时间显示
(display-time-mode t)
(setq display-time-24hr-format t)
(setq display-time-day-and-date nil)
(setq display-time-interval 60)
;;让 Emacs 可以直接打开和显示图片
(setq auto-image-file-mode t)
;; 高亮显示要拷贝的区域
(transient-mark-mode t)
;; 高亮显示当前行
(highlight-current-line-on 1)
;;光标显示为一竖线
(setq-default cursor-type 'bar)
;;进行语法加亮
(global-font-lock-mode t)
;;允许临时设置标记
(transient-mark-mode t)
;;用空格代替tab
;;(setq default-tab-width 4 indent-tabs-mode nil)
;;(setq tab-width 4 indent-tabs-mode nil)
;;(setq tab-stop-list ())
;; edit
(put 'set-goal-column 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
;;鼠标滚轮,默认的滚动太快,这里改为3行
(defun up-slightly () (interactive) (scroll-up 3))
(defun down-slightly () (interactive) (scroll-down 3))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)
;;设置 sentence-end 可以识别中文标点
(setq sentence-end "//([。!?]//|……//|[.?!][]/"')}]*//($//|[ /t]//)//)[ /t/n]*")
(setq sentence-end-double-space nil)
;;解决emacs shell乱码
(setq ansi-color-for-comint-mode t)
(setq ansi-color-names-vector ["black" "red" "green" "blue" "yellow" "magenta" "cyan" "white"])
(setq verilog-auto-lineup (quote all))
(customize-group 'ansi-colors)
(kill-this-buffer);;关闭customize窗口
;; shell-command - enables tab-completion for `shell-command'
(shell-command-completion-mode)
;;shell,gdb退出后,自动关闭该buffer
(defun kill-buffer-when-exit ()
"Close assotiated buffer when a process exited"
(let ((current-process (ignore-errors (get-buffer-process (current-buffer)))))
(when current-process
(set-process-sentinel current-process
(lambda (watch-process change-state)
(when (string-match "//(finished//|exited//)" change-state)
(kill-buffer (process-buffer watch-process))))))))
(add-hook 'gdb-mode-hook 'kill-buffer-when-exit)
(add-hook 'shell-mode-hook 'kill-buffer-when-exit)
;;让 dired 可以递归的拷贝和删除目录
(setq dired-listing-switches "-lh")
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;;括号匹配,找到对应的括号{}
(defun match-paren (arg)
"Go to the matching paren if on a paren; otherwise insert %."
(interactive "p")
(cond ((looking-at "//s/(") (forward-list 1) (backward-char 1))
((looking-at "//s/)") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))
(global-set-key "%" 'match-paren)
;;自动补全括号,包括(), '', [] , {} ,""
(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)
;;可以递归的使用 minibuffer
(setq scroll-margin 3 scroll-conservatively 10000)
;;不显示ecbTip
(setq ecb-tip-of-the-day nil)
(global-ede-mode 1) ; Enable the Project management system
(semantic-load-enable-code-helpers) ; Enable prototype help and smart completion
;;启动/关闭ECB
(defun openecb () (interactive) (ecb-activate) (ecb-layout-switch "left1") (xgtags-mode))
(global-set-key [f12] 'openecb)
(global-set-key [C-f12] 'ecb-deactivate)
;; tabbar 标签功能
(tabbar-mode t)
(global-set-key (kbd "<s-up>") 'tabbar-backward-group)
(global-set-key (kbd "<s-down>") 'tabbar-forward-group)
(global-set-key (kbd "<s-left>") 'tabbar-backward)
(global-set-key (kbd "<s-right>") 'tabbar-forward)
;; ibuffer - operate on buffers like dired
(global-set-key (kbd "C-x C-b") 'ibuffer)
;; ido - interactively do things with buffers and files.
(setq ido-confirm-unique-completion t)
(setq ido-default-buffer-method 'samewindow)
(setq ido-use-filename-at-point t)
(setq ido-enable-flex-matching t)
(ido-mode t)
(ido-everywhere t)
(set-face-background 'ido-first-match "green")
(set-face-foreground 'ido-subdir "blue3")
(setq ido-enable-flex-matching t)
;;goto-char:当你按 C-c a x (x 是任意一个字符) 时,光 标就会到下一个 x 处,再次按 x,光标就到下一个 x.
(defun wy-go-to-char (n char)
"Move forward to Nth occurence of CHAR.
Typing `wy-go-to-char-key' again will move forwad to the next Nthoccurence of CHAR."
(interactive "p/ncGo to char: ")
(search-forward (string char) nil nil n)
(while (char-equal (read-char) char)
(search-forward (string char) nil nil n))
(setq unread-command-events (list last-input-event)))
(global-set-key (kbd "C-c g") 'wy-go-to-char)
;;;;;;;;;;;;;;;;;;;;
;;C语言编辑
;;;;;;;;;;;;;;;;;;;;
;; 加载GLOBAL
(require 'xgtags)
;;(setq c-mode-hook '(lambda () (gtags-mode 1)))
;; 变量自动对
(global-set-key "/C-x/C-j" 'align)
;; 智能编译 & GDB
(require 'smart-compile)
(global-set-key [(f5)] 'smart-compile)
(global-set-key (kbd "<f6>") 'gdb)
(global-set-key (kbd "<f7>") 'gdb-many-windows)
;; 自动跳到第一个error
(setq compilation-auto-jump-to-first-error t)
(add-hook 'gdb-mode-hook
(lambda ()
(local-set-key "/C-u" 'comint-kill-input)
(local-set-key "/M-p" 'comint-previous-matching-input-from-input)))
;; Auto-complete 自动补全
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "/usr/local/share/emacs/site-lisp/ac-dict")
(ac-config-default)
(global-set-key [(control ?/)] 'ac-complete-gccsense)
;; CUA矩阵编辑模式
;; M-x cua-mod
;; 然后移动光标到矩阵左上角并使用 Ctrl-Enter
;; gccsense
;; (require 'gccsense)
;; 快速include一个系统头文件
(mapc
(lambda (mode)
(define-abbrev-table mode '(("inc" "" skeleton-include 1))))
'(c-mode-abbrev-table c++-mode-abbrev-table))
;; 输入 inc , 可以自动提示输入文件名称,可以自动补全.
(define-skeleton skeleton-include
"generate include<>" ""
> "#include <"
(completing-read "Include File:"
(mapcar #'(lambda (f) (list f ))
(apply 'append
(mapcar
#'(lambda (dir)
(directory-files dir))
(list "/usr/include"
"/usr/include/sys"
"/usr/local/include"
"/usr/lib/gcc/i486-linux-gnu/4.4/include"
"/usr/lib/gcc/i486-linux-gnu/4.4/include-fixed")))))">")
;; CEDET
(require 'xcscope)
(require 'cedet)
;; Semantic代码间跳转和自动补全
(semantic-load-enable-minimum-features)
(semantic-load-enable-code-helpers)
;;(semantic-load-enable-guady-code-helpers)
(semantic-load-enable-excessive-code-helpers)
(semantic-load-enable-semantic-debugging-helpers)
;; 可视化书签
(enable-visual-studio-bookmarks)
;; 代码折叠
(require 'semantic-tag-folding nil 'noerror)
(global-semantic-tag-folding-mode 1)
(define-key semantic-tag-folding-mode-map (kbd "C-c C--") 'semantic-tag-folding-fold-block)
(define-key semantic-tag-folding-mode-map (kbd "C-c C-+") 'semantic-tag-folding-show-block)
(define-key semantic-tag-folding-mode-map (kbd "C-_") 'semantic-tag-folding-fold-all)
(define-key semantic-tag-folding-mode-map (kbd "C-+") 'semantic-tag-folding-show-all)
;;配置Semantic的检索范围
(setq semanticdb-project-roots (list (expand-file-name "/")))
(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
)
)
(global-set-key [(meta ?/)] 'semantic-ia-complete-symbol-menu)
;;高亮光标处单词
(require 'highlight-symbol)
(global-set-key [(control f8)] 'highlight-symbol-at-point)
(global-set-key [f8] 'highlight-symbol-next)
(global-set-key [(shift f8)] 'highlight-symbol-prev)
(defun my-c-mode-common-hook()
(interactive)
(setq semantic-load-turn-everything-on t)
(require 'semantic-load)
(c-set-style "K&R")
(setq tab-width 8)
(setq indent-tabs-mode t)
(setq c-basic-offset 8)
;;(c-toggle-auto-state 1);自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐
(c-toggle-auto-newline 1)
(c-toggle-hungry-state 1);此模式下,当按Backspace时会删除最多的空格,使得if缩进正
(imenu-add-menubar-index);在菜单中加入当前Buffer的函数索引
(which-function-mode);在状态条上显示当前光标在哪个函数体内部
(c-toggle-auto-hungry-state 1)
;; (define-key c-mode-map [return] 'newline-and-indent)
(auto-fill-mode)
;; xgtags
;; Commonly keybingdings, etags style.
(global-set-key (kbd "<C-M-.>") 'xgtags-find-with-grep)
(global-set-key (kbd "<C-M-;>") 'xgtags-find-rtag)
;; Cscope style
(local-set-key "/C-cas" 'xgtags-find-symbol)
(local-set-key "/C-cad" 'xgtags-find-tag)
(local-set-key "/C-cac" 'xgtags-find-rtag)
(local-set-key "/C-caf" 'xgtags-find-file)
(local-set-key "/C-cai" 'xgtags-find-with-idutils)
(local-set-key "/C-can" 'xgtags-select-next-tag)
(local-set-key "/C-cap" 'xgtags-select-prev-tag)
(local-set-key "/C-cau" 'xgtags-pop-stack)
)
(add-hook 'c-mode-hook 'my-c-mode-common-hook)
(add-hook 'c++-mode-hook 'my-c-mode-common-hook)
;; 清除代码中不必要的空格和TAB
(global-set-key [f4] 'whitespace-cleanup)
;; 全屏
(defun my_fullscreen ()
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
'(2 "_NET_WM_STATE_FULLSCREEN" 0)))
(global-set-key [f11] 'my_fullscreen)
;;把这些缺省禁用的功能打开
(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)
;; 用flymake检测C/C++语法
;;(autoload 'flymake-find-file-hook "flymake" "" t)
;;(add-hook 'find-file-hook 'flymake-find-file-hook)
;;(setq flymake-gui-warnings-enabled nil)
;;(setq flymake-log-level 0)
;; ORG模块
;;(require 'org-install)
;;(require 'org-publish)
;;(add-to-list 'auto-mode-alist '("//.org//'" . org-mode))
;;(add-hook 'org-mode-hook 'turn-on-font-lock)
;;(add-hook 'org-mode-hook
;;(lambda () (setq truncate-lines nil)))
;;;; 只高亮显示最后一个代表层级的*
;;(setq org-hide-leading-stars t)
;; 给已完成事项打上时间戳。可选note,附加注释
;;(setq org-log-done 'time)
;;(global-set-key "/C-cl" 'org-store-link)
;;;; C-c a进入日程表
;;(global-set-key "/C-ca" 'org-agenda)
;;(global-set-key "/C-cb" 'org-iswitchb)
;;(setq org-agenda-files (list "~/notes/todolist.org"))
;;
;;(require 'color-theme)
;;(color-theme-bharadwaj-slate)
;; GIT 版本管理
;;(setq load-path (cons (expand-file-name "/usr/share/doc/git-core/contrib/emacs") load-path))
;; (require 'vc-git)
;; (when (featurep 'vc-git) (add-to-list 'vc-handled-backends 'git))
;; (require 'git)
;; (autoload 'git-blame-mode "git-blame"
;; "Minor mode for incremental blame for Git." t)
;; google go lang
;; (require 'go-mode-load)
==============================================================
;;设置有用的个人信息
(setq user-full-name "Heng Liu")
(setq user-mail-address "liuhengloveyou@gmail.com")
;; 引入系统变量, 中文输入法需要
(setenv "LC_CTYPE" "zh_CN.utf-8")
(setenv "EDITOR" "/usr/bin/emacs")
;; 字体设置
(custom-set-faces '(default ((t (:slant normal :weight normal :height 83 :width normal)))))
(custom-set-variables
'(column-number-mode t)
'(ecb-options-version "2.32")
'(ecb-primary-secondary-mouse-buttons (quote mouse-1--C-mouse-1))
'(menu-bar-mode t)
'(scroll-bar-mode nil)
'(show-paren-mode t)
'(size-indication-mode t)
'(tool-bar-mode nil)
'(transient-mark-mode (quote (only . t))))
;;关闭启动画面
(setq inhibit-startup-message t)
;; 关闭出错时的蜂鸣提示声
(setq visible-bell t)
;; 尽快显示按键序列
(setq echo-keystrokes 0.1)
;; 用来显示当前光标在哪个函数
(which-func-mode 1)
(setq which-func-unknown "unknown func")
;; 父目录/buffer名,显示同名buffer
(setq uniquify-buffer-name-style 'forward)
;; 默认启用文本模式
(setq default-major-mode 'text-mode)
(add-hook 'text-mode-hook 'turn-on-auto-fill)
(setq enable-recursive-minibuffers t)
;; 单独跳出一个frame
(setq special-display-buffer-names '("*Help*" "*Apropos*"))
;; 显示行号
(global-linum-mode 1)
;;显示列号
(setq column-number-mode t)
;;默认显示 80列就换行
(setq default-fill-column 80)
;;在minibuffer里启用自动补全函数和变量
(icomplete-mode 1)
;;允许minibuffer自由变化其宽度大小
(setq resize-mini-windows t)
;;指针不要闪
(blink-cursor-mode -1)
;; Linux 下复制内容到系统的剪切板
(setq x-select-enable-clipboard t)
;; 启用部分补全功能,如输入M-x q r r相当于M-x query-replace-regexp
(partial-completion-mode 1)
;;很大的 kill ring 方便的在 kill-ring 里寻找需要的东西
(setq kill-ring-max 200)
(defadvice yank-pop (around kill-ring-browse-maybe (arg))
"If last action was not a yank, run `browse-kill-ring' instead."
(if (not (eq last-command 'yank))
(browse-kill-ring)
ad-do-it))
(ad-activate 'yank-pop)
(global-set-key (kbd "C-c k") 'browse-kill-ring)
;; 设置书签文件
;; C-x r m Bookmark bookmark-set 设置一个名为 Bookmark 的书签
;; C-x r l bookmarks-bmenu-list 列出所有已保存的书签
;; C-x r b Bookmark bookmark-jump 跳转至名为 Bookmark 的书签中所设置的位置
;; bookmark-delete 删除一个书签
;; bookmark-save 将所有的书签保存到书签文件中
;; 跟书签功能类似的寄存器
;; C-x r space X point-to-register 将光标保存到寄存器 X
;; C-x r s X copy-to-register 将区域保存到寄存器 X
;; C-x r r X copy-rectangle-to-register 将选定的矩形区块保存到寄存器 X
;; view-register 查看一个给定的寄存器的内容
;; C-x r j X jump-to-register 将光标移动到寄存器 X 中给定的位置
;; C-x r i X insert-register 在光标处插入寄存器 X 的内容
(setq bookmark-default-file "~/.emacs.d/emacs.bmk")
;;设置缩略词的文件
(setq abbrev-file-name "~/.emacs.d/abbrev_defs")
;; 在emacs读man文档时,使用当前buffer
(setq Man-notify-method 'pushy)
;;启用备份
(setq version-control t)
;;备份最原始的版本两次,记第一次编辑前的文档,和第二次编辑前的文档
(setq kept-old-versions 2)
;;备份最新的版本5次,理解同上
(setq kept-new-versions 5)
;;删掉不属于以上7版本的版本
(setq delete-old-versions t)
;;设置备份文件的路径
(setq backup-directory-alist '(("." . "~/.emacs.d/backup")))
;;备份设置方法,直接拷贝
(setq backup-by-copying t)
;; 不产生备份文件
(setq make-backup-files nil)
;; 不产生备份
(setq backup-inhibited t)
;; 不生成名为#filename#的临时文件
(setq auto-save-default nil)
;; 自动保存
(setq auto-save-mode t)
;;自动重载更改的文件
(global-auto-revert-mode 1)
;;当鼠标移动的时候自动转换frame,window或者minibuffer
(setq mouse-autoselect-window t)
;;以 y/n代表 yes/no
(fset 'yes-or-no-p 'y-or-n-p)
;;将F10绑定为显示菜单栏
(global-set-key [(f10)] 'menu-bar-mode)
;;光标靠近鼠标指针时,让鼠标指针自动让开,别挡住视线
(mouse-avoidance-mode 'animate)
;;支持emacs和外部程序的粘贴
(setq x-select-enable-clipboard t)
;; Tell Emacs fill commands to insert two after a colon
(setq colon-double-space t)
;; 在文档最后自动插入空白行
(setq require-final-newline t)
;;括号匹配时显示另外一边的括号,而不是烦人的跳到另一个括号
(show-paren-mode t)
(setq show-paren-style 'parentheses)
;;在标题栏显示buffer的名字.区分不同的主机和用户名称
(setq frame-title-format '((:eval (getenv-internal "LOGNAME"))"@"(:eval (system-name))":"(:eval (or (buffer-file-name) (buffer-name)))))
;; mode line上的时间显示
(display-time-mode t)
(setq display-time-24hr-format t)
(setq display-time-day-and-date nil)
(setq display-time-interval 60)
;;让 Emacs 可以直接打开和显示图片
(setq auto-image-file-mode t)
;; 高亮显示要拷贝的区域
(transient-mark-mode t)
;; 高亮显示当前行
(highlight-current-line-on 1)
;;光标显示为一竖线
(setq-default cursor-type 'bar)
;;进行语法加亮
(global-font-lock-mode t)
;;允许临时设置标记
(transient-mark-mode t)
;;用空格代替tab
;;(setq default-tab-width 4 indent-tabs-mode nil)
;;(setq tab-width 4 indent-tabs-mode nil)
;;(setq tab-stop-list ())
;; edit
(put 'set-goal-column 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
;;鼠标滚轮,默认的滚动太快,这里改为3行
(defun up-slightly () (interactive) (scroll-up 3))
(defun down-slightly () (interactive) (scroll-down 3))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)
;;设置 sentence-end 可以识别中文标点
(setq sentence-end "//([。!?]//|……//|[.?!][]/"')}]*//($//|[ /t]//)//)[ /t/n]*")
(setq sentence-end-double-space nil)
;;解决emacs shell乱码
(setq ansi-color-for-comint-mode t)
(setq ansi-color-names-vector ["black" "red" "green" "blue" "yellow" "magenta" "cyan" "white"])
(setq verilog-auto-lineup (quote all))
(customize-group 'ansi-colors)
(kill-this-buffer);;关闭customize窗口
;; shell-command - enables tab-completion for `shell-command'
(shell-command-completion-mode)
;;shell,gdb退出后,自动关闭该buffer
(defun kill-buffer-when-exit ()
"Close assotiated buffer when a process exited"
(let ((current-process (ignore-errors (get-buffer-process (current-buffer)))))
(when current-process
(set-process-sentinel current-process
(lambda (watch-process change-state)
(when (string-match "//(finished//|exited//)" change-state)
(kill-buffer (process-buffer watch-process))))))))
(add-hook 'gdb-mode-hook 'kill-buffer-when-exit)
(add-hook 'shell-mode-hook 'kill-buffer-when-exit)
;;让 dired 可以递归的拷贝和删除目录
(setq dired-listing-switches "-lh")
(setq dired-recursive-copies 'top)
(setq dired-recursive-deletes 'top)
;;括号匹配,找到对应的括号{}
(defun match-paren (arg)
"Go to the matching paren if on a paren; otherwise insert %."
(interactive "p")
(cond ((looking-at "//s/(") (forward-list 1) (backward-char 1))
((looking-at "//s/)") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))
(global-set-key "%" 'match-paren)
;;自动补全括号,包括(), '', [] , {} ,""
(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)
;;可以递归的使用 minibuffer
(setq scroll-margin 3 scroll-conservatively 10000)
;;不显示ecbTip
(setq ecb-tip-of-the-day nil)
(global-ede-mode 1) ; Enable the Project management system
(semantic-load-enable-code-helpers) ; Enable prototype help and smart completion
;;启动/关闭ECB
(defun openecb () (interactive) (ecb-activate) (ecb-layout-switch "left1") (xgtags-mode))
(global-set-key [f12] 'openecb)
(global-set-key [C-f12] 'ecb-deactivate)
;; tabbar 标签功能
(tabbar-mode t)
(global-set-key (kbd "<s-up>") 'tabbar-backward-group)
(global-set-key (kbd "<s-down>") 'tabbar-forward-group)
(global-set-key (kbd "<s-left>") 'tabbar-backward)
(global-set-key (kbd "<s-right>") 'tabbar-forward)
;; ibuffer - operate on buffers like dired
(global-set-key (kbd "C-x C-b") 'ibuffer)
;; ido - interactively do things with buffers and files.
(setq ido-confirm-unique-completion t)
(setq ido-default-buffer-method 'samewindow)
(setq ido-use-filename-at-point t)
(setq ido-enable-flex-matching t)
(ido-mode t)
(ido-everywhere t)
(set-face-background 'ido-first-match "green")
(set-face-foreground 'ido-subdir "blue3")
(setq ido-enable-flex-matching t)
;;goto-char:当你按 C-c a x (x 是任意一个字符) 时,光 标就会到下一个 x 处,再次按 x,光标就到下一个 x.
(defun wy-go-to-char (n char)
"Move forward to Nth occurence of CHAR.
Typing `wy-go-to-char-key' again will move forwad to the next Nthoccurence of CHAR."
(interactive "p/ncGo to char: ")
(search-forward (string char) nil nil n)
(while (char-equal (read-char) char)
(search-forward (string char) nil nil n))
(setq unread-command-events (list last-input-event)))
(global-set-key (kbd "C-c g") 'wy-go-to-char)
;;;;;;;;;;;;;;;;;;;;
;;C语言编辑
;;;;;;;;;;;;;;;;;;;;
;; 加载GLOBAL
(require 'xgtags)
;;(setq c-mode-hook '(lambda () (gtags-mode 1)))
;; 变量自动对
(global-set-key "/C-x/C-j" 'align)
;; 智能编译 & GDB
(require 'smart-compile)
(global-set-key [(f5)] 'smart-compile)
(global-set-key (kbd "<f6>") 'gdb)
(global-set-key (kbd "<f7>") 'gdb-many-windows)
;; 自动跳到第一个error
(setq compilation-auto-jump-to-first-error t)
(add-hook 'gdb-mode-hook
(lambda ()
(local-set-key "/C-u" 'comint-kill-input)
(local-set-key "/M-p" 'comint-previous-matching-input-from-input)))
;; Auto-complete 自动补全
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "/usr/local/share/emacs/site-lisp/ac-dict")
(ac-config-default)
(global-set-key [(control ?/)] 'ac-complete-gccsense)
;; CUA矩阵编辑模式
;; M-x cua-mod
;; 然后移动光标到矩阵左上角并使用 Ctrl-Enter
;; gccsense
;; (require 'gccsense)
;; 快速include一个系统头文件
(mapc
(lambda (mode)
(define-abbrev-table mode '(("inc" "" skeleton-include 1))))
'(c-mode-abbrev-table c++-mode-abbrev-table))
;; 输入 inc , 可以自动提示输入文件名称,可以自动补全.
(define-skeleton skeleton-include
"generate include<>" ""
> "#include <"
(completing-read "Include File:"
(mapcar #'(lambda (f) (list f ))
(apply 'append
(mapcar
#'(lambda (dir)
(directory-files dir))
(list "/usr/include"
"/usr/include/sys"
"/usr/local/include"
"/usr/lib/gcc/i486-linux-gnu/4.4/include"
"/usr/lib/gcc/i486-linux-gnu/4.4/include-fixed")))))">")
;; CEDET
(require 'xcscope)
(require 'cedet)
;; Semantic代码间跳转和自动补全
(semantic-load-enable-minimum-features)
(semantic-load-enable-code-helpers)
;;(semantic-load-enable-guady-code-helpers)
(semantic-load-enable-excessive-code-helpers)
(semantic-load-enable-semantic-debugging-helpers)
;; 可视化书签
(enable-visual-studio-bookmarks)
;; 代码折叠
(require 'semantic-tag-folding nil 'noerror)
(global-semantic-tag-folding-mode 1)
(define-key semantic-tag-folding-mode-map (kbd "C-c C--") 'semantic-tag-folding-fold-block)
(define-key semantic-tag-folding-mode-map (kbd "C-c C-+") 'semantic-tag-folding-show-block)
(define-key semantic-tag-folding-mode-map (kbd "C-_") 'semantic-tag-folding-fold-all)
(define-key semantic-tag-folding-mode-map (kbd "C-+") 'semantic-tag-folding-show-all)
;;配置Semantic的检索范围
(setq semanticdb-project-roots (list (expand-file-name "/")))
(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
)
)
(global-set-key [(meta ?/)] 'semantic-ia-complete-symbol-menu)
;;高亮光标处单词
(require 'highlight-symbol)
(global-set-key [(control f8)] 'highlight-symbol-at-point)
(global-set-key [f8] 'highlight-symbol-next)
(global-set-key [(shift f8)] 'highlight-symbol-prev)
(defun my-c-mode-common-hook()
(interactive)
(setq semantic-load-turn-everything-on t)
(require 'semantic-load)
(c-set-style "K&R")
(setq tab-width 8)
(setq indent-tabs-mode t)
(setq c-basic-offset 8)
;;(c-toggle-auto-state 1);自动模式,在此种模式下当你键入{时,会自动根据你设置的对齐风格对齐
(c-toggle-auto-newline 1)
(c-toggle-hungry-state 1);此模式下,当按Backspace时会删除最多的空格,使得if缩进正
(imenu-add-menubar-index);在菜单中加入当前Buffer的函数索引
(which-function-mode);在状态条上显示当前光标在哪个函数体内部
(c-toggle-auto-hungry-state 1)
;; (define-key c-mode-map [return] 'newline-and-indent)
(auto-fill-mode)
;; xgtags
;; Commonly keybingdings, etags style.
(global-set-key (kbd "<C-M-.>") 'xgtags-find-with-grep)
(global-set-key (kbd "<C-M-;>") 'xgtags-find-rtag)
;; Cscope style
(local-set-key "/C-cas" 'xgtags-find-symbol)
(local-set-key "/C-cad" 'xgtags-find-tag)
(local-set-key "/C-cac" 'xgtags-find-rtag)
(local-set-key "/C-caf" 'xgtags-find-file)
(local-set-key "/C-cai" 'xgtags-find-with-idutils)
(local-set-key "/C-can" 'xgtags-select-next-tag)
(local-set-key "/C-cap" 'xgtags-select-prev-tag)
(local-set-key "/C-cau" 'xgtags-pop-stack)
)
(add-hook 'c-mode-hook 'my-c-mode-common-hook)
(add-hook 'c++-mode-hook 'my-c-mode-common-hook)
;; 清除代码中不必要的空格和TAB
(global-set-key [f4] 'whitespace-cleanup)
;; 全屏
(defun my_fullscreen ()
(interactive)
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
'(2 "_NET_WM_STATE_FULLSCREEN" 0)))
(global-set-key [f11] 'my_fullscreen)
;;把这些缺省禁用的功能打开
(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)
;; 用flymake检测C/C++语法
;;(autoload 'flymake-find-file-hook "flymake" "" t)
;;(add-hook 'find-file-hook 'flymake-find-file-hook)
;;(setq flymake-gui-warnings-enabled nil)
;;(setq flymake-log-level 0)
;; ORG模块
;;(require 'org-install)
;;(require 'org-publish)
;;(add-to-list 'auto-mode-alist '("//.org//'" . org-mode))
;;(add-hook 'org-mode-hook 'turn-on-font-lock)
;;(add-hook 'org-mode-hook
;;(lambda () (setq truncate-lines nil)))
;;;; 只高亮显示最后一个代表层级的*
;;(setq org-hide-leading-stars t)
;; 给已完成事项打上时间戳。可选note,附加注释
;;(setq org-log-done 'time)
;;(global-set-key "/C-cl" 'org-store-link)
;;;; C-c a进入日程表
;;(global-set-key "/C-ca" 'org-agenda)
;;(global-set-key "/C-cb" 'org-iswitchb)
;;(setq org-agenda-files (list "~/notes/todolist.org"))
;;
;;(require 'color-theme)
;;(color-theme-bharadwaj-slate)
;; GIT 版本管理
;;(setq load-path (cons (expand-file-name "/usr/share/doc/git-core/contrib/emacs") load-path))
;; (require 'vc-git)
;; (when (featurep 'vc-git) (add-to-list 'vc-handled-backends 'git))
;; (require 'git)
;; (autoload 'git-blame-mode "git-blame"
;; "Minor mode for incremental blame for Git." t)
;; google go lang
;; (require 'go-mode-load)
相关文章推荐
- 美图三款手机齐发,不注重配置的美图现在注重这个了!
- 我的emacs配置
- "由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题"解决方法
- VC2005程序的一个运行错误 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
- Cao Le 的 Emacs的使用和配置
- 记录一下emacs在window下的配置过程
- Windows上配置Emacs来开发Python及用Python扩展Emacs
- Emacs配置C/C++-mode的代码智能提示和自动补全
- loadlibrary(xxx.dll) 失败 返回14001 由于应用程序配置不正确 应用程序未能启动.重新安装应用程序可能会纠正这个问 .
- loadlibrary(xxx.dll) 失败 返回14001 由于应用程序配置不正确 应用程序未能启动.重新安装应用程序可能会纠正这个问
- 一种石头,在某一高度扔下就会碎,在这个高度以下不会碎,高度以上一定碎。现在有4个石头,1000层的楼房,需要测定这个石头破碎的高度。求最少多少次一定可以测出来。
- ubantu 配置 erlang 18.0 + emacs + autocomplete
- 把Emacs配置成C++和LaTeX环境
- Windows上创建Emacs配置文件
- 由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备。(代码 19)
- emacs+prelude问题配置
- (键盘)代码 19:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备 解决方法
- 用Emacs中写LaTex以及中文配置问题
- JS版本的甘特图,希望对要用的朋友有帮助,现在这个还不支持树型收缩!想修改成AJAX形式的想XTREE那样
- 套用今天的签名“最新的VS+最新的MATLAB+最新的WINDOWS=无尽的烦恼 ”,用了一天的时间去配置相关的环境,确实很囧。好在现在问题解决了,特发布过程如下,希望能给有需要的朋友带来帮助。