elisp/haskell-init.el
changeset 84 2ad7a42a31f7
parent 83 ab9ebd922ccb
child 85 0b91f7fe5a89
equal deleted inserted replaced
83:ab9ebd922ccb 84:2ad7a42a31f7
     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)