initial commit
This commit is contained in:
commit
c313dfee34
6 changed files with 669 additions and 0 deletions
22
custom/setup-cedet.el
Executable file
22
custom/setup-cedet.el
Executable file
|
|
@ -0,0 +1,22 @@
|
|||
(require 'cc-mode)
|
||||
(require 'semantic)
|
||||
|
||||
(global-semanticdb-minor-mode 1)
|
||||
(global-semantic-idle-scheduler-mode 1)
|
||||
(global-semantic-stickyfunc-mode 1)
|
||||
|
||||
(semantic-mode 1)
|
||||
|
||||
(defun alexott/cedet-hook ()
|
||||
(local-set-key "\C-c\C-j" 'semantic-ia-fast-jump)
|
||||
(local-set-key "\C-c\C-s" 'semantic-ia-show-summary))
|
||||
|
||||
(add-hook 'c-mode-common-hook 'alexott/cedet-hook)
|
||||
(add-hook 'c-mode-hook 'alexott/cedet-hook)
|
||||
(add-hook 'c++-mode-hook 'alexott/cedet-hook)
|
||||
|
||||
;; Enable EDE only in C/C++
|
||||
(require 'ede)
|
||||
(global-ede-mode)
|
||||
|
||||
(provide 'setup-cedet)
|
||||
298
custom/setup-editing.el
Executable file
298
custom/setup-editing.el
Executable file
|
|
@ -0,0 +1,298 @@
|
|||
;; GROUP: Editing -> Editing Basics
|
||||
|
||||
(setq global-mark-ring-max 5000 ; increase mark ring to contains 5000 entries
|
||||
mark-ring-max 5000 ; increase kill ring to contains 5000 entries
|
||||
mode-require-final-newline t ; add a newline to end of file
|
||||
tab-width 4 ; default to 4 visible spaces to display a tab
|
||||
)
|
||||
|
||||
(add-hook 'sh-mode-hook (lambda ()
|
||||
(setq tab-width 4)))
|
||||
|
||||
(set-terminal-coding-system 'utf-8)
|
||||
(set-keyboard-coding-system 'utf-8)
|
||||
(set-language-environment "UTF-8")
|
||||
(prefer-coding-system 'utf-8)
|
||||
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(delete-selection-mode)
|
||||
(global-set-key (kbd "RET") 'newline-and-indent)
|
||||
|
||||
;; GROUP: Editing -> Killing
|
||||
(setq kill-ring-max 5000 ; increase kill-ring capacity
|
||||
kill-whole-line t ; if NIL, kill whole line and move the next line up
|
||||
)
|
||||
|
||||
;; show whitespace in diff-mode
|
||||
(add-hook 'diff-mode-hook (lambda ()
|
||||
(setq-local whitespace-style
|
||||
'(face
|
||||
tabs
|
||||
tab-mark
|
||||
spaces
|
||||
space-mark
|
||||
trailing
|
||||
indentation::space
|
||||
indentation::tab
|
||||
newline
|
||||
newline-mark))
|
||||
(whitespace-mode 1)))
|
||||
|
||||
;; Package: volatile-highlights
|
||||
;; GROUP: Editing -> Volatile Highlights
|
||||
(require 'volatile-highlights)
|
||||
(volatile-highlights-mode t)
|
||||
|
||||
;; Package: clean-aindent-mode
|
||||
;; GROUP: Editing -> Indent -> Clean Aindent
|
||||
(require 'clean-aindent-mode)
|
||||
(add-hook 'prog-mode-hook 'clean-aindent-mode)
|
||||
|
||||
|
||||
;; PACKAGE: dtrt-indent
|
||||
(require 'dtrt-indent)
|
||||
(dtrt-indent-mode 1)
|
||||
(setq dtrt-indent-verbosity 0)
|
||||
|
||||
;; PACKAGE: ws-butler
|
||||
(require 'ws-butler)
|
||||
(add-hook 'c-mode-common-hook 'ws-butler-mode)
|
||||
(add-hook 'text-mode 'ws-butler-mode)
|
||||
(add-hook 'fundamental-mode 'ws-butler-mode)
|
||||
|
||||
;; Package: undo-tree
|
||||
;; GROUP: Editing -> Undo -> Undo Tree
|
||||
(require 'undo-tree)
|
||||
(global-undo-tree-mode)
|
||||
|
||||
;; Package: yasnippet
|
||||
;; GROUP: Editing -> Yasnippet
|
||||
(require 'yasnippet)
|
||||
(yas-global-mode 1)
|
||||
|
||||
;; PACKAGE: smartparens
|
||||
(require 'smartparens-config)
|
||||
(setq sp-base-key-bindings 'paredit)
|
||||
(setq sp-autoskip-closing-pair 'always)
|
||||
(setq sp-hybrid-kill-entire-symbol nil)
|
||||
(sp-use-paredit-bindings)
|
||||
|
||||
(show-smartparens-global-mode +1)
|
||||
(smartparens-global-mode 1)
|
||||
|
||||
;; PACKAGE: comment-dwim-2
|
||||
(global-set-key (kbd "M-;") 'comment-dwim-2)
|
||||
|
||||
;; Jump to end of snippet definition
|
||||
(define-key yas-keymap (kbd "<return>") 'yas/exit-all-snippets)
|
||||
|
||||
;; Inter-field navigation
|
||||
(defun yas/goto-end-of-active-field ()
|
||||
(interactive)
|
||||
(let* ((snippet (car (yas--snippets-at-point)))
|
||||
(position (yas--field-end (yas--snippet-active-field snippet))))
|
||||
(if (= (point) position)
|
||||
(move-end-of-line 1)
|
||||
(goto-char position))))
|
||||
|
||||
(defun yas/goto-start-of-active-field ()
|
||||
(interactive)
|
||||
(let* ((snippet (car (yas--snippets-at-point)))
|
||||
(position (yas--field-start (yas--snippet-active-field snippet))))
|
||||
(if (= (point) position)
|
||||
(move-beginning-of-line 1)
|
||||
(goto-char position))))
|
||||
|
||||
(define-key yas-keymap (kbd "C-e") 'yas/goto-end-of-active-field)
|
||||
(define-key yas-keymap (kbd "C-a") 'yas/goto-start-of-active-field)
|
||||
;; (define-key yas-minor-mode-map [(tab)] nil)
|
||||
;; (define-key yas-minor-mode-map (kbd "TAB") nil)
|
||||
;; (define-key yas-minor-mode-map (kbd "C-<tab>") 'yas-expand)
|
||||
;; No dropdowns please, yas
|
||||
(setq yas-prompt-functions '(yas/ido-prompt yas/completing-prompt))
|
||||
|
||||
;; No need to be so verbose
|
||||
(setq yas-verbosity 1)
|
||||
|
||||
;; Wrap around region
|
||||
(setq yas-wrap-around-region t)
|
||||
|
||||
(add-hook 'term-mode-hook (lambda() (setq yas-dont-activate t)))
|
||||
|
||||
;; PACKAGE: anzu
|
||||
;; GROUP: Editing -> Matching -> Isearch -> Anzu
|
||||
(require 'anzu)
|
||||
(global-anzu-mode)
|
||||
(global-set-key (kbd "M-%") 'anzu-query-replace)
|
||||
(global-set-key (kbd "C-M-%") 'anzu-query-replace-regexp)
|
||||
|
||||
;; PACKAGE: iedit
|
||||
(setq iedit-toggle-key-default nil)
|
||||
(require 'iedit)
|
||||
(global-set-key (kbd "C-;") 'iedit-mode)
|
||||
|
||||
;; PACKAGE: duplicate-thing
|
||||
(require 'duplicate-thing)
|
||||
(global-set-key (kbd "M-c") 'duplicate-thing)
|
||||
|
||||
;; Customized functions
|
||||
(defun prelude-move-beginning-of-line (arg)
|
||||
"Move point back to indentation of beginning of line.
|
||||
|
||||
Move point to the first non-whitespace character on this line.
|
||||
If point is already there, move to the beginning of the line.
|
||||
Effectively toggle between the first non-whitespace character and
|
||||
the beginning of the line.
|
||||
|
||||
If ARG is not nil or 1, move forward ARG - 1 lines first. If
|
||||
point reaches the beginning or end of the buffer, stop there."
|
||||
(interactive "^p")
|
||||
(setq arg (or arg 1))
|
||||
|
||||
;; Move lines first
|
||||
(when (/= arg 1)
|
||||
(let ((line-move-visual nil))
|
||||
(forward-line (1- arg))))
|
||||
|
||||
(let ((orig-point (point)))
|
||||
(back-to-indentation)
|
||||
(when (= orig-point (point))
|
||||
(move-beginning-of-line 1))))
|
||||
|
||||
(global-set-key (kbd "C-a") 'prelude-move-beginning-of-line)
|
||||
|
||||
(defadvice kill-ring-save (before slick-copy activate compile)
|
||||
"When called interactively with no active region, copy a single
|
||||
line instead."
|
||||
(interactive
|
||||
(if mark-active (list (region-beginning) (region-end))
|
||||
(message "Copied line")
|
||||
(list (line-beginning-position)
|
||||
(line-beginning-position 2)))))
|
||||
|
||||
(defadvice kill-region (before slick-cut activate compile)
|
||||
"When called interactively with no active region, kill a single
|
||||
line instead."
|
||||
(interactive
|
||||
(if mark-active (list (region-beginning) (region-end))
|
||||
(list (line-beginning-position)
|
||||
(line-beginning-position 2)))))
|
||||
|
||||
;; kill a line, including whitespace characters until next non-whiepsace character
|
||||
;; of next line
|
||||
(defadvice kill-line (before check-position activate)
|
||||
(if (member major-mode
|
||||
'(emacs-lisp-mode scheme-mode lisp-mode
|
||||
c-mode c++-mode objc-mode
|
||||
latex-mode plain-tex-mode))
|
||||
(if (and (eolp) (not (bolp)))
|
||||
(progn (forward-char 1)
|
||||
(just-one-space 0)
|
||||
(backward-char 1)))))
|
||||
|
||||
;; taken from prelude-editor.el
|
||||
;; automatically indenting yanked text if in programming-modes
|
||||
(defvar yank-indent-modes
|
||||
'(LaTeX-mode TeX-mode)
|
||||
"Modes in which to indent regions that are yanked (or yank-popped).
|
||||
Only modes that don't derive from `prog-mode' should be listed here.")
|
||||
|
||||
(defvar yank-indent-blacklisted-modes
|
||||
'(python-mode slim-mode haml-mode)
|
||||
"Modes for which auto-indenting is suppressed.")
|
||||
|
||||
(defvar yank-advised-indent-threshold 1000
|
||||
"Threshold (# chars) over which indentation does not automatically occur.")
|
||||
|
||||
(defun yank-advised-indent-function (beg end)
|
||||
"Do indentation, as long as the region isn't too large."
|
||||
(if (<= (- end beg) yank-advised-indent-threshold)
|
||||
(indent-region beg end nil)))
|
||||
|
||||
(defadvice yank (after yank-indent activate)
|
||||
"If current mode is one of 'yank-indent-modes,
|
||||
indent yanked text (with prefix arg don't indent)."
|
||||
(if (and (not (ad-get-arg 0))
|
||||
(not (member major-mode yank-indent-blacklisted-modes))
|
||||
(or (derived-mode-p 'prog-mode)
|
||||
(member major-mode yank-indent-modes)))
|
||||
(let ((transient-mark-mode nil))
|
||||
(yank-advised-indent-function (region-beginning) (region-end)))))
|
||||
|
||||
(defadvice yank-pop (after yank-pop-indent activate)
|
||||
"If current mode is one of `yank-indent-modes',
|
||||
indent yanked text (with prefix arg don't indent)."
|
||||
(when (and (not (ad-get-arg 0))
|
||||
(not (member major-mode yank-indent-blacklisted-modes))
|
||||
(or (derived-mode-p 'prog-mode)
|
||||
(member major-mode yank-indent-modes)))
|
||||
(let ((transient-mark-mode nil))
|
||||
(yank-advised-indent-function (region-beginning) (region-end)))))
|
||||
|
||||
;; prelude-core.el
|
||||
(defun indent-buffer ()
|
||||
"Indent the currently visited buffer."
|
||||
(interactive)
|
||||
(indent-region (point-min) (point-max)))
|
||||
|
||||
;; prelude-editing.el
|
||||
(defcustom prelude-indent-sensitive-modes
|
||||
'(coffee-mode python-mode slim-mode haml-mode yaml-mode)
|
||||
"Modes for which auto-indenting is suppressed."
|
||||
:type 'list)
|
||||
|
||||
(defun indent-region-or-buffer ()
|
||||
"Indent a region if selected, otherwise the whole buffer."
|
||||
(interactive)
|
||||
(unless (member major-mode prelude-indent-sensitive-modes)
|
||||
(save-excursion
|
||||
(if (region-active-p)
|
||||
(progn
|
||||
(indent-region (region-beginning) (region-end))
|
||||
(message "Indented selected region."))
|
||||
(progn
|
||||
(indent-buffer)
|
||||
(message "Indented buffer.")))
|
||||
(whitespace-cleanup))))
|
||||
|
||||
(global-set-key (kbd "C-c i") 'indent-region-or-buffer)
|
||||
|
||||
;; add duplicate line function from Prelude
|
||||
;; taken from prelude-core.el
|
||||
(defun prelude-get-positions-of-line-or-region ()
|
||||
"Return positions (beg . end) of the current line
|
||||
or region."
|
||||
(let (beg end)
|
||||
(if (and mark-active (> (point) (mark)))
|
||||
(exchange-point-and-mark))
|
||||
(setq beg (line-beginning-position))
|
||||
(if mark-active
|
||||
(exchange-point-and-mark))
|
||||
(setq end (line-end-position))
|
||||
(cons beg end)))
|
||||
|
||||
;; smart openline
|
||||
(defun prelude-smart-open-line (arg)
|
||||
"Insert an empty line after the current line.
|
||||
Position the cursor at its beginning, according to the current mode.
|
||||
With a prefix ARG open line above the current line."
|
||||
(interactive "P")
|
||||
(if arg
|
||||
(prelude-smart-open-line-above)
|
||||
(progn
|
||||
(move-end-of-line nil)
|
||||
(newline-and-indent))))
|
||||
|
||||
(defun prelude-smart-open-line-above ()
|
||||
"Insert an empty line above the current line.
|
||||
Position the cursor at it's beginning, according to the current mode."
|
||||
(interactive)
|
||||
(move-beginning-of-line nil)
|
||||
(newline-and-indent)
|
||||
(forward-line -1)
|
||||
(indent-according-to-mode))
|
||||
|
||||
(global-set-key (kbd "M-o") 'prelude-smart-open-line)
|
||||
(global-set-key (kbd "M-o") 'open-line)
|
||||
|
||||
(provide 'setup-editing)
|
||||
16
custom/setup-ggtags.el
Executable file
16
custom/setup-ggtags.el
Executable file
|
|
@ -0,0 +1,16 @@
|
|||
(require 'ggtags)
|
||||
(add-hook 'c-mode-common-hook
|
||||
(lambda ()
|
||||
(when (derived-mode-p 'c-mode 'c++-mode 'java-mode 'asm-mode)
|
||||
(ggtags-mode 1))))
|
||||
|
||||
(define-key ggtags-mode-map (kbd "C-c g s") 'ggtags-find-other-symbol)
|
||||
(define-key ggtags-mode-map (kbd "C-c g h") 'ggtags-view-tag-history)
|
||||
(define-key ggtags-mode-map (kbd "C-c g r") 'ggtags-find-reference)
|
||||
(define-key ggtags-mode-map (kbd "C-c g f") 'ggtags-find-file)
|
||||
(define-key ggtags-mode-map (kbd "C-c g c") 'ggtags-create-tags)
|
||||
(define-key ggtags-mode-map (kbd "C-c g u") 'ggtags-update-tags)
|
||||
|
||||
(define-key ggtags-mode-map (kbd "M-,") 'pop-tag-mark)
|
||||
|
||||
(provide 'setup-ggtags)
|
||||
33
custom/setup-helm-gtags.el
Executable file
33
custom/setup-helm-gtags.el
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
(require 'helm-gtags)
|
||||
|
||||
(setq
|
||||
helm-gtags-ignore-case t
|
||||
helm-gtags-auto-update t
|
||||
helm-gtags-use-input-at-cursor t
|
||||
helm-gtags-pulse-at-cursor t
|
||||
helm-gtags-prefix-key "\C-cg"
|
||||
helm-gtags-suggested-key-mapping t
|
||||
)
|
||||
|
||||
;; Enable helm-gtags-mode in Dired so you can jump to any tag
|
||||
;; when navigate project tree with Dired
|
||||
(add-hook 'dired-mode-hook 'helm-gtags-mode)
|
||||
|
||||
;; Enable helm-gtags-mode in Eshell for the same reason as above
|
||||
(add-hook 'eshell-mode-hook 'helm-gtags-mode)
|
||||
|
||||
;; Enable helm-gtags-mode in languages that GNU Global supports
|
||||
(add-hook 'c-mode-hook 'helm-gtags-mode)
|
||||
(add-hook 'c++-mode-hook 'helm-gtags-mode)
|
||||
(add-hook 'java-mode-hook 'helm-gtags-mode)
|
||||
(add-hook 'asm-mode-hook 'helm-gtags-mode)
|
||||
|
||||
;; key bindings
|
||||
(define-key helm-gtags-mode-map (kbd "C-c g a") 'helm-gtags-tags-in-this-function)
|
||||
(define-key helm-gtags-mode-map (kbd "C-j") 'helm-gtags-select)
|
||||
(define-key helm-gtags-mode-map (kbd "M-.") 'helm-gtags-dwim)
|
||||
(define-key helm-gtags-mode-map (kbd "M-,") 'helm-gtags-pop-stack)
|
||||
(define-key helm-gtags-mode-map (kbd "C-c <") 'helm-gtags-previous-history)
|
||||
(define-key helm-gtags-mode-map (kbd "C-c >") 'helm-gtags-next-history)
|
||||
|
||||
(provide 'setup-helm-gtags)
|
||||
97
custom/setup-helm.el
Executable file
97
custom/setup-helm.el
Executable file
|
|
@ -0,0 +1,97 @@
|
|||
(require 'helm-config)
|
||||
(require 'helm-grep)
|
||||
|
||||
;; The default "C-x c" is quite close to "C-x C-c", which quits Emacs.
|
||||
;; Changed to "C-c h". Note: We must set "C-c h" globally, because we
|
||||
;; cannot change `helm-command-prefix-key' once `helm-config' is loaded.
|
||||
(global-set-key (kbd "C-c h") 'helm-command-prefix)
|
||||
(global-unset-key (kbd "C-x c"))
|
||||
|
||||
(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) ; rebihnd tab to do persistent action
|
||||
(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB works in terminal
|
||||
(define-key helm-map (kbd "C-z") 'helm-select-action) ; list actions using C-z
|
||||
|
||||
(define-key helm-grep-mode-map (kbd "<return>") 'helm-grep-mode-jump-other-window)
|
||||
(define-key helm-grep-mode-map (kbd "n") 'helm-grep-mode-jump-other-window-forward)
|
||||
(define-key helm-grep-mode-map (kbd "p") 'helm-grep-mode-jump-other-window-backward)
|
||||
|
||||
(when (executable-find "curl")
|
||||
(setq helm-google-suggest-use-curl-p t))
|
||||
|
||||
(setq
|
||||
helm-scroll-amount 4 ; scroll 4 lines other window using M-<next>/M-<prior>
|
||||
helm-ff-search-library-in-sexp t ; search for library in `require' and `declare-function' sexp.
|
||||
helm-split-window-in-side-p t ;; open helm buffer inside current window, not occupy whole other window
|
||||
helm-candidate-number-limit 500 ; limit the number of displayed canidates
|
||||
helm-ff-file-name-history-use-recentf t
|
||||
helm-move-to-line-cycle-in-source t ; move to end or beginning of source when reaching top or bottom of source.
|
||||
helm-buffers-fuzzy-matching t ; fuzzy matching buffer names when non-nil
|
||||
; useful in helm-mini that lists buffers
|
||||
|
||||
)
|
||||
|
||||
(add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
|
||||
|
||||
(global-set-key (kbd "M-x") 'helm-M-x)
|
||||
(global-set-key (kbd "M-y") 'helm-show-kill-ring)
|
||||
(global-set-key (kbd "C-x b") 'helm-mini)
|
||||
(global-set-key (kbd "C-x C-f") 'helm-find-files)
|
||||
(global-set-key (kbd "C-h SPC") 'helm-all-mark-rings)
|
||||
(global-set-key (kbd "C-c h o") 'helm-occur)
|
||||
|
||||
(global-set-key (kbd "C-c h C-c w") 'helm-wikipedia-suggest)
|
||||
|
||||
(global-set-key (kbd "C-c h x") 'helm-register)
|
||||
;; (global-set-key (kbd "C-x r j") 'jump-to-register)
|
||||
|
||||
(define-key 'help-command (kbd "C-f") 'helm-apropos)
|
||||
(define-key 'help-command (kbd "r") 'helm-info-emacs)
|
||||
(define-key 'help-command (kbd "C-l") 'helm-locate-library)
|
||||
|
||||
;; use helm to list eshell history
|
||||
(add-hook 'eshell-mode-hook
|
||||
#'(lambda ()
|
||||
(define-key eshell-mode-map (kbd "M-l") 'helm-eshell-history)))
|
||||
|
||||
;;; Save current position to mark ring
|
||||
(add-hook 'helm-goto-line-before-hook 'helm-save-current-pos-to-mark-ring)
|
||||
|
||||
;; show minibuffer history with Helm
|
||||
(define-key minibuffer-local-map (kbd "M-p") 'helm-minibuffer-history)
|
||||
(define-key minibuffer-local-map (kbd "M-n") 'helm-minibuffer-history)
|
||||
|
||||
(define-key global-map [remap find-tag] 'helm-etags-select)
|
||||
|
||||
(define-key global-map [remap list-buffers] 'helm-buffers-list)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; PACKAGE: helm-swoop ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Locate the helm-swoop folder to your path
|
||||
(require 'helm-swoop)
|
||||
|
||||
;; Change the keybinds to whatever you like :)
|
||||
(global-set-key (kbd "C-c h o") 'helm-swoop)
|
||||
(global-set-key (kbd "C-c s") 'helm-multi-swoop-all)
|
||||
|
||||
;; When doing isearch, hand the word over to helm-swoop
|
||||
(define-key isearch-mode-map (kbd "M-i") 'helm-swoop-from-isearch)
|
||||
|
||||
;; From helm-swoop to helm-multi-swoop-all
|
||||
(define-key helm-swoop-map (kbd "M-i") 'helm-multi-swoop-all-from-helm-swoop)
|
||||
|
||||
;; Save buffer when helm-multi-swoop-edit complete
|
||||
(setq helm-multi-swoop-edit-save t)
|
||||
|
||||
;; If this value is t, split window inside the current window
|
||||
(setq helm-swoop-split-with-multiple-windows t)
|
||||
|
||||
;; Split direcion. 'split-window-vertically or 'split-window-horizontally
|
||||
(setq helm-swoop-split-direction 'split-window-vertically)
|
||||
|
||||
;; If nil, you can slightly boost invoke speed in exchange for text color
|
||||
(setq helm-swoop-speed-or-color t)
|
||||
|
||||
(helm-mode 1)
|
||||
|
||||
(provide 'setup-helm)
|
||||
203
init.el
Executable file
203
init.el
Executable file
|
|
@ -0,0 +1,203 @@
|
|||
(require 'package)
|
||||
(add-to-list 'package-archives
|
||||
'("melpa" . "http://melpa.milkbox.net/packages/") t)
|
||||
(package-initialize)
|
||||
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives
|
||||
'("melpa" . "http://melpa.org/packages/") t)
|
||||
(package-initialize)
|
||||
|
||||
(setq gc-cons-threshold 100000000)
|
||||
(setq inhibit-startup-message t)
|
||||
|
||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
|
||||
(defconst demo-packages
|
||||
'(anzu
|
||||
company
|
||||
duplicate-thing
|
||||
ggtags
|
||||
helm
|
||||
helm-gtags
|
||||
helm-projectile
|
||||
helm-swoop
|
||||
function-args
|
||||
clean-aindent-mode
|
||||
comment-dwim-2
|
||||
dtrt-indent
|
||||
ws-butler
|
||||
iedit
|
||||
yasnippet
|
||||
smartparens
|
||||
projectile
|
||||
volatile-highlights
|
||||
undo-tree
|
||||
zygospore))
|
||||
|
||||
(defun install-packages ()
|
||||
"Install all required packages."
|
||||
(interactive)
|
||||
(unless package-archive-contents
|
||||
(package-refresh-contents))
|
||||
(dolist (package demo-packages)
|
||||
(unless (package-installed-p package)
|
||||
(package-install package))))
|
||||
|
||||
(install-packages)
|
||||
|
||||
;; this variables must be set before load helm-gtags
|
||||
;; you can change to any prefix key of your choice
|
||||
(setq helm-gtags-prefix-key "\C-cg")
|
||||
|
||||
(add-to-list 'load-path "~/.emacs.d/custom")
|
||||
|
||||
(require 'setup-helm)
|
||||
(require 'setup-helm-gtags)
|
||||
;; (require 'setup-ggtags)
|
||||
(require 'setup-cedet)
|
||||
(require 'setup-editing)
|
||||
|
||||
(windmove-default-keybindings)
|
||||
|
||||
;; function-args
|
||||
(require 'function-args)
|
||||
(fa-config-default)
|
||||
(define-key c-mode-map [(tab)] 'moo-complete)
|
||||
(define-key c++-mode-map [(tab)] 'moo-complete)
|
||||
|
||||
;; company
|
||||
(require 'company)
|
||||
(add-hook 'after-init-hook 'global-company-mode)
|
||||
(delete 'company-semantic company-backends)
|
||||
(define-key c-mode-map [(control tab)] 'company-complete)
|
||||
(define-key c++-mode-map [(control tab)] 'company-complete)
|
||||
|
||||
;; company-c-headers
|
||||
(add-to-list 'company-backends 'company-c-headers)
|
||||
|
||||
;; hs-minor-mode for folding source code
|
||||
(add-hook 'c-mode-common-hook 'hs-minor-mode)
|
||||
|
||||
;; Available C style:
|
||||
;; “gnu”: The default style for GNU projects
|
||||
;; “k&r”: What Kernighan and Ritchie, the authors of C used in their book
|
||||
;; “bsd”: What BSD developers use, aka “Allman style” after Eric Allman.
|
||||
;; “whitesmith”: Popularized by the examples that came with Whitesmiths C, an early commercial C compiler.
|
||||
;; “stroustrup”: What Stroustrup, the author of C++ used in his book
|
||||
;; “ellemtel”: Popular C++ coding standards as defined by “Programming in C++, Rules and Recommendations,” Erik Nyquist and Mats Henricson, Ellemtel
|
||||
;; “linux”: What the Linux developers use for kernel development
|
||||
;; “python”: What Python developers use for extension modules
|
||||
;; “java”: The default style for java-mode (see below)
|
||||
;; “user”: When you want to define your own style
|
||||
(setq
|
||||
c-default-style "linux" ;; set style to "linux"
|
||||
c-basic-offset 2)
|
||||
|
||||
;; use space to indent by default
|
||||
(setq-default indent-tabs-mode nil)
|
||||
|
||||
;; set appearance of a tab that is represented by 2 spaces
|
||||
(setq-default tab-width 2)
|
||||
|
||||
;; BEGIN my c style
|
||||
;; (setq-default c-indent-tabs-mode t ; Pressing TAB should cause indentation
|
||||
;; c-indent-level 2 ; A TAB is equivilent to two spaces
|
||||
;; c-argdecl-indent 0 ; Do not indent argument decl's extra
|
||||
;; c-tab-always-indent t
|
||||
;; backward-delete-function nil) ; DO NOT expand tabs when deleting
|
||||
;; (c-add-style "my-c-style" '((c-continued-statement-offset 2))) ; If a statement continues on the next line, indent the continuation by 2
|
||||
;; (defun my-c-mode-hook ()
|
||||
;; (c-set-style "my-c-style")
|
||||
;; (c-set-offset 'substatement-open '0) ; brackets should be at same indentation level as the statements they open
|
||||
;; (c-set-offset 'inline-open '+)
|
||||
;; (c-set-offset 'block-open '+)
|
||||
;; (c-set-offset 'brace-list-open '+) ; all "opens" should be indented by the c-indent-level
|
||||
;; (c-set-offset 'case-label '+)) ; indent case labels by c-indent-level, too
|
||||
;; (add-hook 'c-mode-hook 'my-c-mode-hook)
|
||||
;; (add-hook 'c++-mode-hook 'my-c-mode-hook)
|
||||
;; END my c style
|
||||
|
||||
(global-set-key (kbd "RET") 'newline-and-indent) ; automatically indent when press RET
|
||||
|
||||
;; activate whitespace-mode to view all whitespace characters
|
||||
(global-set-key (kbd "C-c w") 'whitespace-mode)
|
||||
|
||||
;; show unncessary whitespace that can mess up your diff
|
||||
(add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
|
||||
|
||||
|
||||
;; Compilation
|
||||
(global-set-key (kbd "<f5>") (lambda ()
|
||||
(interactive)
|
||||
(setq-local compilation-read-command nil)
|
||||
(call-interactively 'compile)))
|
||||
|
||||
;; setup GDB
|
||||
(setq
|
||||
;; use gdb-many-windows by default
|
||||
gdb-many-windows t
|
||||
|
||||
;; Non-nil means display source file containing the main routine at startup
|
||||
gdb-show-main t
|
||||
)
|
||||
|
||||
;; Package: clean-aindent-mode
|
||||
(require 'clean-aindent-mode)
|
||||
(add-hook 'prog-mode-hook 'clean-aindent-mode)
|
||||
|
||||
;; Package: dtrt-indent
|
||||
(require 'dtrt-indent)
|
||||
(dtrt-indent-mode 1)
|
||||
|
||||
;; Package: ws-butler
|
||||
(require 'ws-butler)
|
||||
(add-hook 'prog-mode-hook 'ws-butler-mode)
|
||||
|
||||
;; Package: yasnippet
|
||||
(require 'yasnippet)
|
||||
(yas-global-mode 1)
|
||||
|
||||
;; Package: smartparens
|
||||
(require 'smartparens-config)
|
||||
(setq sp-base-key-bindings 'paredit)
|
||||
(setq sp-autoskip-closing-pair 'always)
|
||||
(setq sp-hybrid-kill-entire-symbol nil)
|
||||
(sp-use-paredit-bindings)
|
||||
|
||||
(show-smartparens-global-mode +1)
|
||||
(smartparens-global-mode 1)
|
||||
|
||||
;; Package: projejctile
|
||||
(require 'projectile)
|
||||
(projectile-global-mode)
|
||||
(setq projectile-enable-caching t)
|
||||
|
||||
(require 'helm-projectile)
|
||||
(helm-projectile-on)
|
||||
(setq projectile-completion-system 'helm)
|
||||
(setq projectile-indexing-method 'alien)
|
||||
|
||||
;; Package zygospore
|
||||
(global-set-key (kbd "C-x 1") 'zygospore-toggle-delete-other-windows)
|
||||
(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.
|
||||
'(ansi-color-faces-vector
|
||||
[default default default italic underline success warning error])
|
||||
'(ansi-color-names-vector
|
||||
["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"])
|
||||
'(custom-enabled-themes (quote (wheatgrass))))
|
||||
(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.
|
||||
)
|
||||
|
||||
(global-set-key (kbd "C-x C-f") 'helm-find-files)
|
||||
(add-hook 'after-init-hook #'global-flycheck-mode)
|
||||
|
||||
(load-theme 'manoj-dark)
|
||||
Loading…
Add table
Add a link
Reference in a new issue