;;(xterm-mouse-mode t)
(require 'xcscope)
;(setq cscope-database-regexps
; '(
; ( "^/home/gqw/documents/cscope/cscope.out")
; ))
(setq-default indent-tabs-mode nil) ;;不要使用TAB
(setq whitespace-space nil)
(setq whitespace-chars nil)
(setq whitespace-newline 'color)
(show-paren-mode t)
(column-number-mode t)
;; Setup save options (auto and backup) -- still buggy need new Replace func
(setq auto-save-timeout 2000)
(setq make-backup-files t)
(setq
backup-by-copying t ; 自动备份
backup-directory-alist
'(("." . "~/.emacs.d/autosaves")) ; 自动备份在目录"~/.saves"下
delete-old-versions t ; 自动删除旧的备份文件
kept-new-versions 6 ; 保留最近的6个备份文件
kept-old-versions 2 ; 保留最早的2个备份文件
version-control t) ; 多次备份
;; Global Key Bindings
(global-set-key [(meta o)] 'ff-find-other-file)
(global-set-key [(meta w)] 'copy-region-as-kill)
(global-set-key [(meta W)] 'copy-region-as-kill)
(global-set-key (quote [27 f9]) (quote cscope-find-this-symbol))
(global-set-key [(control j)] 'ecb-activate)
(global-set-key [(control l)] 'global-linum-mode)
(global-set-key [(del)] 'delete-char)
(global-set-key [(backspace)] 'delete-backward-char)
(global-set-key [(select)] 'end-of-line)
(global-set-key [(f5)] 'split-window-vertically)
(global-set-key [(f6)] 'split-window-horizontally)
(global-set-key [(f7)] 'other-window)
(global-set-key [(f9)] 'delete-other-windows)
(global-set-key [(f10)] 'cscope-find-this-symbol)
(global-set-key [(f11)] 'cscope-find-egrep-pattern)
;; Setup C mode
(autoload 'c++-mode "cc-mode" "C++ Editing Mode" t)
(autoload 'c-mode "cc-mode" "C Editing Mode" t)
(autoload 'c-mode-common-hook "cc-mode" "C Mode Hooks" t)
(autoload 'c-add-style "cc-mode" "Add coding style" t)
;; Associate extensions with modes
(add-to-list 'auto-mode-alist '("\\.h$" . c++-mode))
(add-to-list 'auto-mode-alist '("\\.json$" . javascript-mode))
(set-face-foreground 'font-lock-string-face "yellow")
(set-face-foreground 'font-lock-comment-face "red")
;; No space before { and function sig indents 4 if argument overflow
(setq bws-c-style
'((c-auto-newline . nil)
(c-basic-offset . 4)
(c-comment-only-line-offset . 0)
(c-echo-syntactic-information-p . nil)
(c-hungry-delete-key . t)
(c-tab-always-indent . t)
(c-toggle-hungry-state . t)
(c-hanging-braces-alist . ((substatement-open after)
(brace-list-open)))
(c-offsets-alist . ((arglist-close . c-lineup-arglist)
(innamespace . 0)
(case-label . 4)
(arglist-intro . 8)
(substatement-open . 0)
(block-open . 0) ; no space before {
(knr-argdecl-intro . -)))
(c-hanging-colons-alist . ((member-init-intro before)
(inher-intro)
(case-label after)
(label after)
(access-label after)))
(c-cleanup-list . (scope-operator
empty-defun-braces
defun-close-semi))))
;; Construct a hook to be called when entering C mode
(defun lconfig-c-mode ()
(progn (define-key c-mode-base-map "\C-m" 'newline-and-indent)
(c-add-style "Brad's Coding Style" bws-c-style t)))
(add-hook 'c-mode-common-hook 'lconfig-c-mode)
(add-hook 'ecb-activate-hook
'(lambda()
(ecb-maximize-window-methods)
(define-key ecb-mode-map "\C-j" 'ecb-deactivate)
(define-key ecb-mode-map "\C-c0" 'ecb-restore-default-window-sizes)
(define-key ecb-mode-map "\C-c1" 'ecb-maximize-window-methods)
(define-key ecb-mode-map "\C-c2" 'ecb-maximize-window-history)
(define-key ecb-mode-map (quote [27 up]) (quote windmove-up))
(define-key ecb-mode-map (quote [27 down]) (quote windmove-down))
(define-key ecb-mode-map (quote [27 left]) (quote windmove-left))
(define-key ecb-mode-map (quote [27 right]) (quote windmove-right))
)
)
;; 去掉行尾空格
(add-hook 'before-save-hook 'whitespace-cleanup)
;; keymap
(if (eq system-uses-terminfo t)
(progn ;; PuTTY hack - needs to be in SCO mode
(define-key key-translation-map [\e] [\M])
(define-key input-decode-map "\e[H" [home])
(define-key input-decode-map "\e[F" [end])
(define-key input-decode-map "\e[L" [insert])
(define-key input-decode-map "\e[D" [S-left])
(define-key input-decode-map "\e[C" [S-right])
(define-key input-decode-map "\e[A" [S-up])
(define-key input-decode-map "\e[B" [S-down])
(define-key input-decode-map "\e[C" [S-right])
(define-key input-decode-map "\e[I" [prior])
(define-key input-decode-map "\e[G" [next])
(define-key input-decode-map "\e[M" [f1])
(define-key input-decode-map "\e[Y" [S-f1])
(define-key input-decode-map "\e[k" [C-f1])
(define-key input-decode-map "\e\e[M" [M-f1])
(define-key input-decode-map "\e[N" [f2])
(define-key input-decode-map "\e[Z" [S-f2])
(define-key input-decode-map "\e[l" [C-f2])
(define-key input-decode-map "\e\e[N" [M-f2])
(define-key input-decode-map "\e[O" [f3])
(define-key input-decode-map "\e[a" [S-f3])
(define-key input-decode-map "\e[m" [C-f3])
(define-key input-decode-map "\e\e[O" [M-f3])
(define-key input-decode-map "\e[P" [f4])
(define-key input-decode-map "\e[b" [S-f4])
(define-key input-decode-map "\e[n" [C-f4])
(define-key input-decode-map "\e\e[P" [M-f4])
(define-key input-decode-map "\e[Q" [f5])
(define-key input-decode-map "\e[c" [S-f5])
(define-key input-decode-map "\e[o" [C-f5])
(define-key input-decode-map "\e\e[Q" [M-f5])
(define-key input-decode-map "\e[R" [f6])
(define-key input-decode-map "\e[d" [S-f6])
(define-key input-decode-map "\e[p" [C-f6])
(define-key input-decode-map "\e\e[R" [M-f6])
(define-key input-decode-map "\e[S" [f7])
(define-key input-decode-map "\e[e" [S-f7])
(define-key input-decode-map "\e[q" [C-f7])
(define-key input-decode-map "\e\e[S" [M-f7])
(define-key input-decode-map "\e[T" [f8])
(define-key input-decode-map "\e[f" [S-f8])
(define-key input-decode-map "\e[r" [C-f8])
(define-key input-decode-map "\e\e[T" [M-f8])
(define-key input-decode-map "\e[U" [f9])
(define-key input-decode-map "\e[g" [S-f9])
(define-key input-decode-map "\e[s" [C-f9])
(define-key input-decode-map "\e\e[U" [M-f9])
(define-key input-decode-map "\e[V" [f10])
(define-key input-decode-map "\e[h" [S-f10])
(define-key input-decode-map "\e[_" [C-f10])
(define-key input-decode-map "\e\e[V" [M-f10])
(define-key input-decode-map "\e[W" [f11])
(define-key input-decode-map "\e[i" [S-f11])
(define-key input-decode-map "\e[u" [C-f11])
(define-key input-decode-map "\e\e[W" [M-f11])
(define-key input-decode-map "\e[X" [f12])
(define-key input-decode-map "\e[j" [S-f12])
(define-key input-decode-map "\e[v" [C-f12])
(define-key input-decode-map "\e\e[X" [M-f12])))
(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-layout-window-sizes nil)
'(ecb-options-version "2.32"))
(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.
)