elisp/haskell-init.el
changeset 90 7ea476e27c9a
parent 89 86b51baf77dd
child 91 79e3c1d350bf
equal deleted inserted replaced
89:86b51baf77dd 90:7ea476e27c9a
     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)