5 |
5 |
6 ;; Require packages |
6 ;; Require packages |
7 (require 'package-require) |
7 (require 'package-require) |
8 (package-require '(haskell-mode ghc yasnippet haskell-snippets flycheck company company-ghc)) |
8 (package-require '(haskell-mode ghc yasnippet haskell-snippets flycheck company company-ghc)) |
9 |
9 |
10 ;; flycheck-haskell |
|
11 |
|
12 (require 'haskell) |
10 (require 'haskell) |
13 (require 'haskell-mode) |
11 (require 'haskell-mode) |
14 (require 'haskell-interactive-mode) |
12 (require 'haskell-interactive-mode) |
15 (require 'haskell-snippets) |
13 (require 'haskell-snippets) |
16 (require 'company) |
14 (require 'company) |
17 |
15 |
18 (add-to-list 'company-backends 'company-ghc) |
16 (add-to-list 'company-backends 'company-ghc) |
19 (autoload 'ghc-init "ghc" nil t) |
|
20 (autoload 'ghc-debug "ghc" nil t) |
|
21 (add-hook 'haskell-mode-hook (lambda () (ghc-init))) |
|
22 ;; (add-hook 'flycheck-mode-hook #'flycheck-haskell-setup) |
|
23 |
17 |
24 (defun haskell-who-calls (&optional prompt) |
18 (defun haskell-who-calls (&optional prompt) |
25 "Grep the codebase to see who uses the symbol at point." |
19 "Grep the codebase to see who uses the symbol at point." |
26 (interactive "P") |
20 (interactive "P") |
27 (let ((sym (if prompt |
21 (let ((sym (if prompt |
46 (imenu-add-menubar-index) |
40 (imenu-add-menubar-index) |
47 (haskell-indentation-mode t) |
41 (haskell-indentation-mode t) |
48 (projectile-mode t) |
42 (projectile-mode t) |
49 (subword-mode t) |
43 (subword-mode t) |
50 (capitalized-words-mode t) |
44 (capitalized-words-mode t) |
51 ;; (interactive-haskell-mode t) |
45 (interactive-haskell-mode t) |
52 |
46 |
53 (setq |
47 (setq |
54 haskell-stylish-on-save t |
48 haskell-stylish-on-save t |
55 haskell-indentation-layout-offset 4 |
49 haskell-indentation-layout-offset 4 |
56 haskell-indentation-left-offset 4 |
50 haskell-indentation-left-offset 4 |
62 |
56 |
63 haskell-interactive-mode-eval-pretty t |
57 haskell-interactive-mode-eval-pretty t |
64 haskell-interactive-mode-scroll-to-bottom t |
58 haskell-interactive-mode-scroll-to-bottom t |
65 haskell-interactive-mode-eval-mode 'haskell-mode |
59 haskell-interactive-mode-eval-mode 'haskell-mode |
66 haskell-interactive-popup-errors nil |
60 haskell-interactive-popup-errors nil |
67 haskell-process-type 'stack-ghci |
61 |
|
62 haskell-process-path-ghci 'ghci-ng |
|
63 haskell-process-args-cabal-repl (quote ("--ghc-option=-ferror-spans --with-ghc ghci-ng")) |
|
64 haskell-process-args-ghci (quote ("--ghc-option=-ferror-spans --with-ghc ghci-ng")) |
|
65 haskell-process-args-stack-ghci (quote ("--ghc-option=-ferror-spans --with-ghc ghci-ng")) |
68 haskell-process-auto-import-loaded-modules t |
66 haskell-process-auto-import-loaded-modules t |
69 haskell-process-log t))) |
67 haskell-process-reload-with-fbytecode nil |
|
68 haskell-process-log t |
|
69 haskell-process-suggest-haskell-docs-imports t |
|
70 haskell-process-suggest-remove-import-lines t |
|
71 haskell-process-use-presentation-mode nil))) |
|
72 |
70 |
73 |
71 ;; keys |
74 ;; keys |
|
75 (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-file) |
|
76 (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) |
|
77 (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
|
78 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
|
79 (define-key haskell-mode-map (kbd "C-c C-k") 'haskell-process-clear) |
|
80 |
|
81 |
|
82 (define-key interactive-haskell-mode-map (kbd "C-?") 'haskell-mode-find-uses) |
|
83 (define-key interactive-haskell-mode-map (kbd "C-c C-t") 'haskell-mode-show-type-at) |
|
84 (define-key interactive-haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
|
85 (define-key interactive-haskell-mode-map (kbd "C-c C-k") 'haskell-process-clear) |
|
86 (define-key interactive-haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) |
|
87 |
72 (define-key haskell-mode-map (kbd "M-,") 'haskell-who-calls) |
88 (define-key haskell-mode-map (kbd "M-,") 'haskell-who-calls) |
|
89 (define-key haskell-mode-map (kbd "M-.") 'haskell-mode-goto-loc) |
73 (define-key haskell-mode-map (kbd "C-c i") 'haskell-navigate-imports) |
90 (define-key haskell-mode-map (kbd "C-c i") 'haskell-navigate-imports) |
|
91 (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) |
74 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
92 (define-key haskell-mode-map (kbd "C-c C-d") 'haskell-describe) |
75 (define-key haskell-mode-map (kbd "C-c C-r") 'haskell-process-load-or-reload) |
93 (define-key haskell-mode-map (kbd "C-c C-r") 'haskell-process-load-or-reload) |
76 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
94 (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) |
77 (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) |
95 (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) |
78 (define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |
96 (define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) |