elisp/haskell-init.el
changeset 78 7d7662fcc8d1
parent 77 c99c95938a05
child 80 e848f1863d6b
equal deleted inserted replaced
77:c99c95938a05 78:7d7662fcc8d1
     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)