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 shm)) |
6 (package-require '(haskell-mode yasnippet haskell-snippets flycheck)) |
7 |
7 |
8 (add-to-list 'load-path "~/.emacs.d/elisp/stack-mode") |
8 (add-to-list 'load-path "~/.emacs.d/elisp/stack-mode") |
9 |
9 |
10 ;; Load haskell-mode from source |
10 ;; Load haskell-mode from source |
11 ;; (add-to-list 'load-path "~/Code/elisp/haskell-mode/") |
11 ;; (add-to-list 'load-path "~/Code/elisp/haskell-mode/") |
12 ;; (require 'haskell-mode-autoloads) |
12 ;; (require 'haskell-mode-autoloads) |
13 |
13 |
|
14 ;; company-mode stack-ide integration |
|
15 (add-to-list 'load-path "~/Code/elisp/company-stack-ide/") |
|
16 (require 'company-stack-ide) |
|
17 (add-to-list 'company-backends 'company-stack-ide) |
|
18 (add-hook 'stack-mode 'company-mode) |
|
19 |
14 (require 'haskell) |
20 (require 'haskell) |
15 (require 'haskell-mode) |
21 (require 'haskell-mode) |
16 (require 'stack-mode) |
22 (require 'stack-mode) |
17 (require 'haskell-interactive-mode) |
23 (require 'haskell-interactive-mode) |
18 (require 'haskell-snippets) |
24 (require 'haskell-snippets) |
19 (require 'shm) |
|
20 |
25 |
21 (defun haskell-who-calls (&optional prompt) |
26 (defun haskell-who-calls (&optional prompt) |
22 "Grep the codebase to see who uses the symbol at point." |
27 "Grep the codebase to see who uses the symbol at point." |
23 (interactive "P") |
28 (interactive "P") |
24 (let ((sym (if prompt |
29 (let ((sym (if prompt |
41 (lambda () |
46 (lambda () |
42 (flycheck-mode t) |
47 (flycheck-mode t) |
43 (flycheck-disable-checker 'haskell-ghc) |
48 (flycheck-disable-checker 'haskell-ghc) |
44 (flycheck-disable-checker 'haskell-stack-ghc) |
49 (flycheck-disable-checker 'haskell-stack-ghc) |
45 (flycheck-clear t) |
50 (flycheck-clear t) |
46 ;; (imenu-add-menubar-index) |
51 (imenu-add-menubar-index) |
47 ;; (haskell-indentation-mode t) |
52 (haskell-indentation-mode t) |
|
53 (haskell-indentation-enable-show-indentations) |
48 (stack-mode t) |
54 (stack-mode t) |
49 (subword-mode t) |
55 (subword-mode t) |
50 (capitalized-words-mode t) |
56 (capitalized-words-mode t) |
51 (electric-indent-mode nil) |
|
52 (structured-haskell-mode t) |
|
53 (set-face-background 'shm-quarantine-face "lemonchiffon") |
|
54 (interactive-haskell-mode t) |
57 (interactive-haskell-mode t) |
55 |
58 |
56 (setq |
59 (setq |
57 haskell-stylish-on-save t |
60 haskell-stylish-on-save t |
58 haskell-indentation-layout-offset 4 |
61 haskell-indentation-layout-offset 4 |
60 |
63 |
61 haskell-notify-p t |
64 haskell-notify-p t |
62 haskell-align-imports-pad-after-name t |
65 haskell-align-imports-pad-after-name t |
63 haskell-ask-also-kill-buffers nil |
66 haskell-ask-also-kill-buffers nil |
64 haskell-import-mapping t |
67 haskell-import-mapping t |
65 |
|
66 shm-use-presentation-mode t |
|
67 shm-auto-insert-skeletons t |
|
68 shm-auto-insert-bangs t |
|
69 |
68 |
70 haskell-interactive-mode-eval-pretty t |
69 haskell-interactive-mode-eval-pretty t |
71 haskell-interactive-mode-scroll-to-bottom t |
70 haskell-interactive-mode-scroll-to-bottom t |
72 haskell-interactive-mode-eval-mode 'haskell-mode |
71 haskell-interactive-mode-eval-mode 'haskell-mode |
73 haskell-interactive-popup-errors nil |
72 haskell-interactive-popup-errors nil |
77 |
76 |
78 ;; keys |
77 ;; keys |
79 (define-key haskell-mode-map (kbd "M-,") 'haskell-who-calls) |
78 (define-key haskell-mode-map (kbd "M-,") 'haskell-who-calls) |
80 (define-key haskell-mode-map (kbd "C-c i") 'haskell-navigate-imports) |
79 (define-key haskell-mode-map (kbd "C-c i") 'haskell-navigate-imports) |
81 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
80 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
82 (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-process-load-or-reload) |
81 (define-key haskell-mode-map (kbd "C-c C-r") 'haskell-process-load-or-reload) |
83 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
82 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
84 (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) |
83 (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) |
85 (define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
84 (define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
86 (define-key haskell-interactive-mode-map (kbd "C-c C-t") 'haskell-process-do-type) |
85 (define-key haskell-interactive-mode-map (kbd "C-c C-t") 'haskell-process-do-type) |
87 |
86 |
88 ;; keys shm |
|
89 (define-key shm-map (kbd "C-c C-p") 'shm/expand-pattern) |
|
90 (define-key shm-map (kbd "C-c C-s") 'shm/case-split) |
|
91 (define-key shm-map (kbd "C-\\") 'shm/goto-last-point) |
|
92 |
|
93 (message "Loading haskell-init...done") |
87 (message "Loading haskell-init...done") |
94 (provide 'haskell-init) |
88 (provide 'haskell-init) |