1 ;; ~/.emacs.d/init.el (~/.emacs) |
1 ;; ~/.emacs.d/init.el (~/.emacs) |
2 ;; Luke Hoersten <[email protected]> |
2 ;; Luke Hoersten <[email protected]> |
3 |
3 |
4 ;;;; General ;;;; |
4 ;;;; General ;;;; |
5 (add-to-list 'load-path "~/.emacs.d/lisp") ; set default emacs load path |
5 (add-to-list 'load-path "~/.emacs.d/elisp") ; set default emacs load path |
6 |
6 |
7 (setq-default |
7 (setq-default |
8 ediff-split-window-function |
8 ediff-split-window-function |
9 'split-window-horizontally ; diff horizontally |
9 'split-window-horizontally ; diff horizontally |
10 inhibit-splash-screen t ; disable splash screen |
10 inhibit-splash-screen t ; disable splash screen |
21 |
21 |
22 (column-number-mode t) ; show column numbers |
22 (column-number-mode t) ; show column numbers |
23 (delete-selection-mode t) ; replace highlighted text |
23 (delete-selection-mode t) ; replace highlighted text |
24 (windmove-default-keybindings) ; move between windows with shift-arrow |
24 (windmove-default-keybindings) ; move between windows with shift-arrow |
25 (fset 'yes-or-no-p 'y-or-n-p) ; replace yes/no prompts |
25 (fset 'yes-or-no-p 'y-or-n-p) ; replace yes/no prompts |
26 (global-hl-line-mode t) ; highlight current line |
26 ;; (global-hl-line-mode t) ; highlight current line |
27 |
27 |
28 |
28 |
29 ;;; Coding |
29 ;;; Coding |
30 (which-func-mode t) ; show current function |
30 (which-func-mode t) ; show current function |
31 (show-paren-mode t) ; show matching paren |
31 (show-paren-mode t) ; show matching paren |
51 (when window-system |
51 (when window-system |
52 (tool-bar-mode -1) ; remove tool bar |
52 (tool-bar-mode -1) ; remove tool bar |
53 (scroll-bar-mode -1) ; remove scroll bar |
53 (scroll-bar-mode -1) ; remove scroll bar |
54 (unless is-mac (menu-bar-mode -1)) ; remove menu bar |
54 (unless is-mac (menu-bar-mode -1)) ; remove menu bar |
55 (visual-line-mode t) ; word wrap break on whitespace |
55 (visual-line-mode t) ; word wrap break on whitespace |
56 (set-frame-font (if is-mac "Ubuntu Mono-12" "Ubuntu Mono-10.5"))) |
56 (set-default-font (if is-mac "Ubuntu Mono-12" "Ubuntu Mono-10.5"))) |
57 |
57 |
58 ;;;; Mode-Specific ;;;; |
58 ;;;; Mode-Specific ;;;; |
59 |
59 |
60 ;;; text-mode |
60 ;;; text-mode |
61 (add-hook 'fundamental-mode-hook 'flyspell-mode) ; spellcheck text |
61 (add-hook 'fundamental-mode-hook 'flyspell-mode) ; spellcheck text |
109 |
109 |
110 |
110 |
111 ;;;; Requires and Packages ;;;; |
111 ;;;; Requires and Packages ;;;; |
112 |
112 |
113 ;;; packages |
113 ;;; packages |
114 (package-initialize) |
114 (require 'package-require) |
115 (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) |
115 (package-require '(auto-complete exec-path-from-shell |
116 (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t) |
116 rainbow-delimiters rainbow-mode solarized-theme visual-regexp |
117 |
117 yasnippet zencoding-mode markdown-mode smex move-text)) |
118 ;; install packages |
118 ;; expand-region multiple-cursors skewer-mode |
119 (let ((ensure-installed |
119 |
120 (lambda (name) |
120 ;;; custom requires |
121 (unless (package-installed-p name) (package-install name)))) |
121 (require 'haskell-init) |
122 (packages '(ac-js2 auto-complete exec-path-from-shell expand-region |
122 (require 'javascript-init) |
123 ghc ghci-completion haskell-mode |
|
124 js2-mode multiple-cursors rainbow-delimiters rainbow-mode |
|
125 skewer-mode solarized-theme visual-regexp yasnippet |
|
126 zencoding-mode json-mode markdown-mode))) |
|
127 (mapc ensure-installed packages)) |
|
128 |
|
129 ;;; requires |
|
130 (require 'c-init) ; c specific elisp |
123 (require 'c-init) ; c specific elisp |
131 (require 'move-line) ; move line up or down |
124 |
132 (require 'uniquify) ; unique buffer names with dirs |
125 ;;; smex |
|
126 (global-set-key (kbd "M-x") 'smex) |
|
127 (global-set-key (kbd "M-X") 'smex-major-mode-commands) |
|
128 (global-set-key (kbd "C-c M-x") 'execute-extended-command) |
|
129 |
|
130 ;;; auto-complete-mode |
133 (require 'auto-complete-config) |
131 (require 'auto-complete-config) |
134 |
|
135 ;;; auto-complete-mode |
|
136 (ac-config-default) |
132 (ac-config-default) |
137 (global-set-key (kbd "M-/") 'auto-complete) |
133 (global-set-key (kbd "M-/") 'auto-complete) |
138 (setq-default ac-auto-start nil) |
134 (setq-default ac-auto-start nil) |
139 |
135 |
140 ;;; terminal |
136 ;;; terminal |
161 (yas-global-mode t) |
158 (yas-global-mode t) |
162 |
159 |
163 ;;; gradle-mode |
160 ;;; gradle-mode |
164 (add-to-list 'auto-mode-alist '("\\.gradle$" . groovy-mode)) |
161 (add-to-list 'auto-mode-alist '("\\.gradle$" . groovy-mode)) |
165 |
162 |
166 ;;; js2-mode |
163 |
167 (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) |
164 ;;; markdown-mode |
168 (add-hook 'js2-mode-hook 'ac-js2-mode) |
165 (add-hook 'markdown-mode-hook 'flyspell-mode) |
169 (setq-default ac-js2-evaluate-calls t) |
166 |
170 |
167 |
171 ;;; html-mode |
168 ;;; html-mode |
172 (add-to-list 'auto-mode-alist '("\\.tpl\\'" . html-mode)) |
169 (add-to-list 'auto-mode-alist '("\\.tpl\\'" . html-mode)) |
173 (add-hook |
170 (add-hook |
174 'html-mode-hook |
171 'html-mode-hook |
175 (lambda () |
172 (lambda () |
176 (local-set-key (kbd "C-c t") 'mc/mark-sgml-tag-pair) |
|
177 (zencoding-mode) |
173 (zencoding-mode) |
178 (rainbow-mode))) |
174 (rainbow-mode))) |
179 |
175 |
180 ;;; css-mode |
176 ;;; css-mode |
181 (add-hook 'css-mode-hook 'rainbow-mode) |
177 (add-hook 'css-mode-hook 'rainbow-mode) |
196 html-mode-hook |
192 html-mode-hook |
197 css-mode-hook |
193 css-mode-hook |
198 clojure-mode-hook |
194 clojure-mode-hook |
199 emacs-lisp-mode-hook)) |
195 emacs-lisp-mode-hook)) |
200 |
196 |
201 ;;; haskell-mode |
|
202 (autoload 'ghc-init "ghc" nil t) |
|
203 (add-hook |
|
204 'haskell-mode-hook |
|
205 (lambda () |
|
206 (ghc-init) |
|
207 (capitalized-words-mode t) |
|
208 (turn-on-hi2) |
|
209 (imenu-add-menubar-index) |
|
210 (interactive-haskell-mode) |
|
211 (local-set-key (kbd "C-c i") 'haskell-navigate-imports) ; go to imports. prefix to return |
|
212 (local-set-key (kbd "M-p") 'move-line-up) ; need to override default M-p function |
|
213 (local-set-key (kbd "M-n") 'move-line-down) |
|
214 (local-set-key (kbd "C-1") 'ghc-display-errors) |
|
215 (local-set-key (kbd "C-.") 'ghc-goto-next-error) |
|
216 (local-set-key (kbd "C-,") 'ghc-goto-prev-error) |
|
217 |
|
218 (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-or-reload) |
|
219 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
|
220 (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) |
|
221 (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
|
222 (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) |
|
223 (define-key haskell-mode-map (kbd "C-c C-k") 'haskell-interactive-mode-clear) |
|
224 (define-key haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) |
|
225 (define-key haskell-mode-map (kbd "SPC") 'haskell-mode-contextual-space) |
|
226 |
|
227 (setq |
|
228 ghc-ghc-options '("-isrc") |
|
229 haskell-program-name "cabal repl" |
|
230 haskell-stylish-on-save t |
|
231 hi2-layout-offset 4 |
|
232 hi2-left-offset 4 |
|
233 whitespace-line-column 78 |
|
234 ;; haskell-process-type 'cabal-repl |
|
235 haskell-process-suggest-remove-import-lines t |
|
236 haskell-process-auto-import-loaded-modules t |
|
237 haskell-process-log t |
|
238 ))) |
|
239 |
|
240 ;;; ghci-mode |
|
241 (add-hook 'inferior-haskell-mode-hook 'turn-on-ghci-completion) |
|
242 |
|
243 ;;; expand-region |
197 ;;; expand-region |
244 (global-set-key (kbd "C-=") 'er/expand-region) |
198 ;; (global-set-key (kbd "C-=") 'er/expand-region) |
245 |
199 |
246 ;;; move-line |
200 ;;; move-text |
247 (global-set-key (kbd "M-p") 'move-line-up) |
201 (global-set-key (kbd "M-p") 'move-text-up) |
248 (global-set-key (kbd "M-n") 'move-line-down) |
202 (global-set-key (kbd "M-n") 'move-text-down) |
249 |
|
250 ;;; multiple-cursors |
|
251 (global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines) |
|
252 (global-set-key (kbd "C->") 'mc/mark-next-like-this) |
|
253 (global-set-key (kbd "C-<") 'mc/mark-previous-like-this) |
|
254 (global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this) |
|
255 |
203 |
256 ;;; visual-regexp |
204 ;;; visual-regexp |
257 (global-set-key (kbd "C-M-%") 'vr/query-replace) |
205 (global-set-key (kbd "C-M-%") 'vr/query-replace) |
258 (global-set-key (kbd "M-%") 'vr/replace) |
206 (global-set-key (kbd "M-%") 'vr/replace) |