init.el
changeset 71 b5976ed7311a
parent 70 88c4f68cb191
child 72 65194c801e61
equal deleted inserted replaced
70:88c4f68cb191 71:b5976ed7311a
     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
   142 (exec-path-from-shell-initialize)
   138 (exec-path-from-shell-initialize)
   143 (eshell)
   139 (eshell)
   144 (add-hook 'eshell-mode-hook (lambda () (setenv "TERM" "emacs")))
   140 (add-hook 'eshell-mode-hook (lambda () (setenv "TERM" "emacs")))
   145 
   141 
   146 ;;; uniquify
   142 ;;; uniquify
       
   143 (require 'uniquify)           ; unique buffer names with dirs
   147 (setq
   144 (setq
   148  uniquify-buffer-name-style 'post-forward
   145  uniquify-buffer-name-style 'post-forward
   149  uniquify-separator ":")
   146  uniquify-separator ":")
   150 
   147 
   151 ;;; color-theme
   148 ;;; color-theme
   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)