d00ddf2983f1806bee1471f00ab524ce50edb21f
[dotfiles.git] / emacs / emacs
1 (setq debug-on-error t)
2
3 (scroll-bar-mode -1)
4 (tool-bar-mode -1)
5 (menu-bar-mode -1)
6 (add-to-list 'default-frame-alist '(width  . 120))
7 (add-to-list 'default-frame-alist '(height . 40))
8 ;(add-to-list 'default-frame-alist '(font . "Source Code Pro for Powerline-12:weight:light" ))
9 (add-to-list 'default-frame-alist '(font . "Source Code Pro for Powerline-12" ))
10 (load-theme 'tango-dark)
11
12
13 (put 'set-goal-column 'disabled nil)
14 (setq vc-follow-symlinks t)
15 (setq visible-bell 1)
16 (setq ring-bell-function 'ignore)
17 (setq resize-mini-windows t)
18
19
20 (add-to-list 'auto-mode-alist '("emacs\\'" . emacs-lisp-mode))
21 ;(set-fringe-mode nil)
22 (fringe-mode 0)
23 ;(set-fringe-mode 1)
24
25 ;(set-face-inverse-video-p 'vertical-border nil)
26 ;(set-face-background 'vertical-border (face-background 'default))
27 ;
28 ;;; Set symbol for the border
29 ;(set-display-table-slot standard-display-table
30 ;                        'vertical-border 
31 ;                        (make-glyph-code ?┃))
32
33 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
34 ;http://y.tsutsumi.io/emacs-from-scratch-part-2-package-management.html
35 (require 'package)
36 (add-to-list 'package-archives
37              '("melpa" . "http://melpa.milkbox.net/packages/") t)
38 (package-initialize)
39
40 (defvar required-packages
41   '(
42     magit
43     helm
44     ido-ubiquitous
45     yasnippet
46     evil
47     ido-vertical-mode
48     smex
49     color-theme
50     color-theme-sanityinc-tomorrow
51     key-chord
52     powerline-evil
53     powerline
54     evil-leader
55     flx-ido
56     flx
57     auto-complete
58     fiplr
59     w3m
60     ace-jump-mode
61     el-get
62     color-identifiers-mode
63     elscreen
64   ) "a list of packages to ensure are installed at launch.")
65
66 (require 'cl)
67 (defun packages-installed-p ()
68   (loop for p in required-packages
69         when (not (package-installed-p p)) do (return nil)
70         finally (return t)))
71
72 (unless (packages-installed-p)
73   (message "%s" "Emacs is now refreshing its package database...")
74   (package-refresh-contents)
75   (message "%s" " done.")
76   (dolist (p required-packages)
77     (when (not (package-installed-p p))
78       (package-install p))))
79 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
80                                         ;
81 ;;(elscreen-start)
82
83 ;;---------------------------------------------------------------------------------------
84 ;; color theme
85 ;;
86 (require 'color-theme)
87 (load-theme 'sanityinc-tomorrow-bright t)
88
89 ;;---------------------------------------------------------------------------------------
90 ;; Ido
91 ;;
92 (require 'ido-vertical-mode)
93 (ido-vertical-mode 1)
94 (require 'flx-ido)
95 (ido-mode 1)
96 (ido-everywhere 1)
97 (flx-ido-mode 1)
98 (setq ido-use-faces nil)
99 ;(setq ido-enable-flex-matching t)
100 ;(setq ido-use-faces t)
101 ;(setq ido-use-faces nil)
102 ;(set-face-attribute 'ido-vertical-first-match-face nil
103 ;                   :background "#e5b7c0")
104 ;(set-face-attribute 'ido-vertical-only-match-face nil
105 ;                   :background "#e52b50"
106 ;                   :foreground "white")
107 ;(set-face-attribute 'ido-vertical-match-face nil
108 ;                   :foreground "#b00000")
109
110 (setq org-completion-use-ido t)
111 (setq magit-completing-read-function 'magit-ido-completing-read)
112
113 (require 'ido-ubiquitous)
114 (ido-ubiquitous-mode 1)
115
116 ;; smex
117 (require 'smex) 
118 (global-set-key (kbd "M-x") 'smex)
119 (global-set-key (kbd "M-X") 'smex-major-mode-commands)
120
121 ;;---------------------------------------------------------------------------------------
122 ;; Magit
123 ;;
124 (require 'magit)
125 ;(setq magit-auto-revert-mode nil)
126 (setq magit-last-seen-setup-instructions "1.4.0")
127
128 ;;---------------------------------------------------------------------------------------
129 ;; powerline
130 ;;
131 (require 'powerline)
132 ;(powerline-evil-vim-color-theme)
133 (powerline-evil-center-color-theme)
134 (display-time-mode t)
135
136 ;;---------------------------------------------------------------------------------------
137 ;; evil
138 ;;
139 (global-evil-leader-mode)
140 (evil-leader/set-leader ";")
141 (evil-leader/set-key "e" 'find-file)
142 (evil-leader/set-key "b" 'switch-to-buffer)
143 (evil-leader/set-key "w" 'evil-write)
144 (require 'evil)
145 ;(setq key-chord-two-keys-delay 0.5)
146 ;(key-chord-define evil-normal-state-map "jj" 'evil-force-normal-state)
147 ;(key-chord-define evil-visual-state-map "jj" 'evil-change-to-previous-state)
148 (key-chord-define evil-insert-state-map "jj" 'evil-normal-state)
149 ;(key-chord-define evil-replace-state-map "jj" 'evil-normal-state)
150 (key-chord-mode 1)
151
152 ;; change mode-line color by evil state
153 ;(lexical-let ((default-color (cons (face-background 'mode-line)
154 ;                                  (face-foreground 'mode-line))))
155 ;  (add-hook 'post-command-hook
156 ;           (lambda ()
157 ;             (let ((color (cond ((minibufferp) default-color)
158 ;                                ((evil-insert-state-p) '("#e80000" . "#ffffff"))
159 ;                                ((evil-emacs-state-p)  '("#444488" . "#ffffff"))
160 ;                                ((buffer-modified-p)   '("#006fa0" . "#ffffff"))
161 ;                                (t default-color))))
162 ;               (set-face-background 'mode-line (car color))
163 ;                          (set-face-foreground 'mode-line (cdr color))))))
164 ;; cursor shape
165 (setq evil-emacs-state-cursor '("red" box))
166 (setq evil-normal-state-cursor '("green" box))
167 (setq evil-visual-state-cursor '("orange" box))
168 (setq evil-insert-state-cursor '("red" bar))
169 (setq evil-replace-state-cursor '("red" bar))
170 (setq evil-operator-state-cursor '("red" hollow))
171 ;;Enter an emacs mode in a given state http://wikemacs.org/wiki/Evil
172 (loop for (mode . state) in '(
173 ;                           (inferior-emacs-lisp-mode . emacs)
174 ;                           (nrepl-mode . insert)
175 ;                           (pylookup-mode . emacs)
176 ;                           (comint-mode . normal)
177 ;                           (shell-mode . emacs)
178 ;                           (git-commit-mode . insert)
179 ;                           (git-rebase-mode . emacs)
180 ;                           (term-mode . emacs)
181 ;                           (help-mode . emacs)
182 ;                           (helm-grep-mode . emacs)
183 ;                           (grep-mode . emacs)
184 ;                           (bc-menu-mode . emacs)
185 ;                           (magit-branch-manager-mode . emacs)
186 ;                           (rdictcc-buffer-mode . emacs)
187 ;                           (dired-mode . emacs)
188 ;                           (wdired-mode . normal)
189                             (eshell-mode . emacs))
190     do (evil-set-initial-state mode state))
191
192 ;(evil-mode 1)
193 ;(require 'powerline-evil)
194 ;; TODO: enter emacs mode in eshll rather then evil mode
195
196 ;;---------------------------------------------------------------------------------------
197 ;; Fiplr
198 ;;
199 (setq fiplr-root-markers '(".git" ".svn" "*.DS_Store"))
200 (setq fiplr-ignored-globs '((directories (".git" ".svn"))
201                             (files ("*.jpg" "*.png" "*.zip" "*~" "*.o" ".obj" "*.swp" "*.hg" ".pyc" ".*" ))))
202
203 (global-set-key (kbd "C-x f") 'fiplr-find-file)
204 ;;---------------------------------------------------------------------------------------
205
206 ;(setq mac-right-option-modifier 'control)
207
208
209
210 ;;---------------------------------------------------------------------------------------
211 ;; Helm
212 ;;
213 ;;;;;;;;;;; helm configuration https://github.com/emacs-helm/helm http://tuhdo.github.io/helm-intro.html
214 ;;(require 'helm-config)
215 ;;(global-set-key (kbd "M-x") 'helm-M-x)
216 ;;(helm-mode 1)
217 ;;(setq helm-M-x-fuzzy-match t)
218 ;;(global-set-key (kbd "C-x b") 'helm-mini)
219 ;;(setq helm-buffers-fuzzy-matching t
220 ;;      helm-recentf-fuzzy-match    t)
221 ;;(global-set-key (kbd "C-x C-f") 'helm-find-files)
222 ;;(when (executable-find "ack-grep")
223 ;;  (setq helm-grep-default-command "ack-grep -Hn --no-group --no-color %e %p %f"
224 ;;        helm-grep-default-recurse-command "ack-grep -H --no-group --no-color %e %p %f"))
225 ;;(setq helm-ff-skip-boring-files t)
226 ;;;(require 'helm-config)
227 ;;;(require 'helm-themes)
228 ;;;(set-face-attribute 'helm-selection nil :background "#441100")
229
230 ;;---------------------------------------------------------------------------------------
231 ;; auto-complete
232 ;;
233 (require 'auto-complete)
234 (auto-complete-mode 1)
235
236
237 ;;; ---------------------------------------- el-get -----------------------------------------
238 ;(require 'el-get)
239 ;(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
240
241 ;(el-get-bundle packages/sm-package-powerline
242 ;  :url "https://github.com/laynor/emacs-conf.git"
243 ;  )
244
245
246
247 ;; Wind-move
248 (global-set-key (kbd "C-x C-l") 'windmove-right)
249 (global-set-key (kbd "C-x C-h") 'windmove-left)
250 (global-set-key (kbd "C-x C-k") 'windmove-up)
251 (global-set-key (kbd "C-x C-j") 'windmove-down)
252
253 ;(global-set-key (kbd "C-x C-s") 'split-window-right)
254
255 ;; windows devider
256 (set-face-attribute 'vertical-border 
257                     nil 
258                     :foreground "gray")
259
260