1 ;; ~/.emacs.d/elisp/haskell-init.el |
1 ;; ~/.emacs.d/elisp/haskell-init.el |
2 ;; Luke Hoersten <[email protected]> |
2 ;; Luke Hoersten <[email protected]> |
3 |
3 |
4 ;; Require packages |
4 ;; Require packages |
5 (require 'package-require) |
5 (require 'package-require) |
6 (package-require '(haskell-mode yasnippet haskell-snippets flycheck flycheck-haskell)) |
6 (package-require '(haskell-mode yasnippet haskell-snippets flycheck flycheck-haskell shm)) |
7 |
7 |
8 ;; Load haskell-mode from source |
8 ;; Load haskell-mode from source |
9 ;; (add-to-list 'load-path "~/Code/elisp/haskell-mode/") |
9 ;; (add-to-list 'load-path "~/Code/elisp/haskell-mode/") |
10 ;; (require 'haskell-mode-autoloads) |
10 ;; (require 'haskell-mode-autoloads) |
11 |
11 |
12 (require 'haskell) |
12 (require 'haskell) |
13 (require 'haskell-mode) |
13 (require 'haskell-mode) |
14 (require 'haskell-process) |
14 (require 'haskell-process) |
15 (require 'haskell-interactive-mode) |
15 (require 'haskell-interactive-mode) |
16 (require 'haskell-snippets) |
16 (require 'haskell-snippets) |
|
17 (require 'shm) |
17 |
18 |
18 (defun haskell-who-calls (&optional prompt) |
19 (defun haskell-who-calls (&optional prompt) |
19 "Grep the codebase to see who uses the symbol at point." |
20 "Grep the codebase to see who uses the symbol at point." |
20 (interactive "P") |
21 (interactive "P") |
21 (let ((sym (if prompt |
22 (let ((sym (if prompt |
51 |
52 |
52 ;;; haskell-mode |
53 ;;; haskell-mode |
53 (add-hook |
54 (add-hook |
54 'haskell-mode-hook |
55 'haskell-mode-hook |
55 (lambda () |
56 (lambda () |
56 (imenu-add-menubar-index) |
57 ;; (imenu-add-menubar-index) |
57 (flycheck-mode) |
58 (flycheck-mode) |
58 (flycheck-haskell-setup) |
59 (flycheck-haskell-setup) |
59 (haskell-indentation-mode t) |
60 ;; (haskell-indentation-mode t) |
60 (subword-mode) |
61 (subword-mode) |
|
62 (electric-indent-mode 0) |
|
63 (structured-haskell-mode t) |
|
64 (set-face-background 'shm-quarantine-face "lemonchiffon") |
61 (interactive-haskell-mode t))) |
65 (interactive-haskell-mode t))) |
62 |
66 |
63 (custom-set-variables |
67 (custom-set-variables |
64 '(capitalized-words-mode t) |
68 '(capitalized-words-mode t) |
65 '(haskell-stylish-on-save t) |
69 '(haskell-stylish-on-save t) |
66 |
70 |
67 '(haskell-indentation-layout-offset 4) |
71 '(haskell-indentation-layout-offset 4) |
68 '(haskell-indentation-left-offset 4) |
72 '(haskell-indentation-left-offset 4) |
|
73 |
|
74 '(shm-use-presentation-mode t) |
|
75 '(shm-auto-insert-skeletons t) |
|
76 '(shm-auto-insert-bangs t) |
69 |
77 |
70 '(haskell-process-type 'cabal-repl) |
78 '(haskell-process-type 'cabal-repl) |
71 ;; '(haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng")) ;; ghci-ng |
79 ;; '(haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng")) ;; ghci-ng |
72 ;; '(haskell-process-path-ghci "ghci-ng") ;; ghci-ng |
80 ;; '(haskell-process-path-ghci "ghci-ng") ;; ghci-ng |
73 '(haskell-process-args-ghci "-ferror-spans") |
81 '(haskell-process-args-ghci "-ferror-spans") |
104 (define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
112 (define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
105 (define-key haskell-interactive-mode-map (kbd "C-<left>") 'haskell-interactive-mode-error-backward) |
113 (define-key haskell-interactive-mode-map (kbd "C-<left>") 'haskell-interactive-mode-error-backward) |
106 (define-key haskell-interactive-mode-map (kbd "C-<right>") 'haskell-interactive-mode-error-forward) |
114 (define-key haskell-interactive-mode-map (kbd "C-<right>") 'haskell-interactive-mode-error-forward) |
107 (define-key haskell-interactive-mode-map (kbd "C-c c") 'haskell-process-cabal) |
115 (define-key haskell-interactive-mode-map (kbd "C-c c") 'haskell-process-cabal) |
108 |
116 |
|
117 ;; haskell-mode |
109 (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-or-reload) |
118 (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-or-reload) |
110 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
119 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
111 (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) |
120 (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) |
112 (define-key haskell-mode-map (kbd "C-c i") 'haskell-navigate-imports) |
121 (define-key haskell-mode-map (kbd "C-c i") 'haskell-navigate-imports) |
113 (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
122 (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
115 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
124 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
116 (define-key haskell-mode-map (kbd "C-c C-k") 'haskell-process-clear) |
125 (define-key haskell-mode-map (kbd "C-c C-k") 'haskell-process-clear) |
117 (define-key haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) |
126 (define-key haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) |
118 (define-key haskell-mode-map (kbd "SPC") 'haskell-mode-contextual-space) |
127 (define-key haskell-mode-map (kbd "SPC") 'haskell-mode-contextual-space) |
119 |
128 |
|
129 ;; cabal |
120 (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) |
130 (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) |
121 (define-key haskell-cabal-mode-map (kbd "C-c C-k") 'haskell-process-clear) |
131 (define-key haskell-cabal-mode-map (kbd "C-c C-k") 'haskell-process-clear) |
122 (define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) |
132 (define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) |
123 (define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal) |
133 (define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal) |
124 |
134 |
|
135 ;; shm |
|
136 (define-key shm-map (kbd "C-c C-p") 'shm/expand-pattern) |
|
137 (define-key shm-map (kbd "C-c C-s") 'shm/case-split) |
|
138 (define-key shm-map (kbd "C-\\") 'shm/goto-last-point) |
|
139 |
125 (message "Loading haskell-init...done") |
140 (message "Loading haskell-init...done") |
126 (provide 'haskell-init) |
141 (provide 'haskell-init) |