elisp/shm-init.el
author Luke Hoersten <Luke@Hoersten.org>
Tue, 15 Sep 2015 09:47:48 -0500
changeset 77 c99c95938a05
parent 71 b5976ed7311a
permissions -rw-r--r--
Added ansible init.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     1
;; ~/.emacs.d/elisp/shm-init.el
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     2
;; Luke Hoersten <[email protected]>
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     3
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     4
;; Require packages
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     5
(require 'package-require)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     6
(package-require '(haskell-mode shm hindent flymake-haskell-multi))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     7
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     8
;; Requirements
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
     9
(require 'shm)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    10
(require 'hindent)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    11
(require 'shm-case-split)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    12
(require 'shm-reformat)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    13
(require 'haskell)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    14
(require 'haskell-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    15
(require 'hindent)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    16
(require 'haskell-process)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    17
(require 'haskell-simple-indent)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    18
(require 'haskell-interactive-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    19
(require 'haskell-font-lock)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    20
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    21
;; Functions
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    22
(defun haskell-process-all-types ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    23
  "List all types in a grep-mode buffer."
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    24
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    25
  (let ((session (haskell-session)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    26
    (switch-to-buffer (get-buffer-create (format "*%s:all-types*"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    27
                                                 (haskell-session-name (haskell-session)))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    28
    (setq haskell-session session)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    29
    (cd (haskell-session-current-dir session))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    30
    (let ((inhibit-read-only t))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    31
      (erase-buffer)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    32
      (let ((haskell-process-log nil))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    33
        (insert (haskell-process-queue-sync-request (haskell-process) ":all-types")))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    34
      (unless (eq major-mode  'compilation-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    35
        (compilation-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    36
        (setq compilation-error-regexp-alist
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    37
              haskell-compilation-error-regexp-alist)))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    38
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    39
(defun haskell-interactive-toggle-print-mode ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    40
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    41
  (setq haskell-interactive-mode-eval-mode
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    42
        (intern
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    43
         (ido-completing-read "Eval result mode: "
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    44
                              '("fundamental-mode"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    45
                                "haskell-mode"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    46
                                "ghc-core-mode")))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    47
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    48
(defun haskell-insert-doc ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    49
  "Insert the documentation syntax."
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    50
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    51
  (insert "-- | "))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    52
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    53
(defun haskell-insert-undefined ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    54
  "Insert undefined."
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    55
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    56
  (if (and (boundp 'structured-haskell-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    57
           structured-haskell-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    58
      (shm-insert-string "undefined")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    59
    (insert "undefined")))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    60
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    61
(defun haskell-move-right ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    62
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    63
  (haskell-move-nested 1))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    64
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    65
(defun haskell-move-left ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    66
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    67
  (haskell-move-nested -1))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    68
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    69
(defun haskell-who-calls (&optional prompt)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    70
  "Grep the codebase to see who uses the symbol at point."
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    71
  (interactive "P")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    72
  (let ((sym (if prompt
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    73
                 (read-from-minibuffer "Look for: ")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    74
               (haskell-ident-at-point))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    75
    (let ((existing (get-buffer "*who-calls*")))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    76
      (when existing
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    77
        (kill-buffer existing)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    78
    (let ((buffer
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    79
           (grep-find (format "cd %s && find . -name '*.hs' -exec grep -inH -e %s {} +"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    80
                              (haskell-session-current-dir (haskell-session))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    81
                              sym))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    82
      (with-current-buffer buffer
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    83
        (rename-buffer "*who-calls*")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    84
        (switch-to-buffer-other-window buffer)))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    85
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    86
(defun haskell-auto-insert-module-template ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    87
  "Insert a module template for the newly created buffer."
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    88
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    89
  (when (and (= (point-min)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    90
                (point-max))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    91
             (buffer-file-name))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    92
    (insert
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    93
     "-- | "
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    94
     "\n"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    95
     "\n"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    96
     "module "
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    97
     )
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    98
    (let ((name (haskell-guess-module-name)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
    99
      (if (string= name "")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   100
          (progn (insert "Main")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   101
                 (shm-evaporate (- (point) 5)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   102
                                (point)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   103
        (insert name)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   104
    (insert " where"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   105
            "\n"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   106
            "\n")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   107
    (goto-char (point-min))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   108
    (forward-char 4)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   109
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   110
(defun shm-contextual-space ()
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   111
  "Do contextual space first, and run shm/space if no change in
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   112
the cursor position happened."
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   113
  (interactive)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   114
  (if (looking-back "import")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   115
      (call-interactively 'haskell-mode-contextual-space)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   116
    (progn
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   117
      (let ((ident (haskell-ident-at-point)))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   118
        (when ident
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   119
          (and interactive-haskell-mode
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   120
               (haskell-process-do-try-type ident))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   121
      (call-interactively 'shm/space))))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   122
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   123
;; Mode settings
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   124
(custom-set-variables
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   125
 '(haskell-process-type 'cabal-repl)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   126
 '(haskell-process-args-cabal-repl
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   127
   '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   128
 '(haskell-notify-p t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   129
 '(haskell-stylish-on-save nil)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   130
 '(haskell-tags-on-save nil)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   131
 '(haskell-process-suggest-remove-import-lines t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   132
 '(haskell-process-auto-import-loaded-modules t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   133
 '(haskell-process-log t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   134
 '(haskell-process-reload-with-fbytecode nil)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   135
 '(haskell-process-use-presentation-mode t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   136
 '(haskell-interactive-mode-include-file-name nil)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   137
 '(haskell-interactive-mode-eval-pretty nil)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   138
 '(shm-use-presentation-mode t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   139
 '(shm-auto-insert-skeletons t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   140
 '(shm-auto-insert-bangs t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   141
 '(haskell-process-suggest-haskell-docs-imports t)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   142
 '(hindent-style "chris-done")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   143
 '(haskell-interactive-mode-eval-mode 'haskell-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   144
 '(haskell-process-path-ghci "ghci-ng")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   145
 '(haskell-process-args-ghci '("-ferror-spans"))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   146
 '(haskell-process-args-cabal-repl
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   147
   '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   148
 '(haskell-process-generate-tags nil)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   149
 '(haskell-complete-module-preferred
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   150
   '("Data.ByteString"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   151
     "Data.ByteString.Lazy"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   152
     "Data.List"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   153
     "Data.Map"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   154
     "Data.Maybe"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   155
     "Data.Monoid"
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   156
     "Data.Ord")))
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   157
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   158
;; Add hook
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   159
(add-hook 'haskell-mode-hook 'structured-haskell-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   160
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   161
(add-hook 'haskell-interactive-mode-hook 'structured-haskell-repl-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   162
(add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   163
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   164
;; Keybindings
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   165
(define-key interactive-haskell-mode-map [f5] 'haskell-process-load-or-reload)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   166
(define-key interactive-haskell-mode-map [f12] 'haskell-process-reload-devel-main)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   167
(define-key interactive-haskell-mode-map (kbd "M-,") 'haskell-who-calls)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   168
(define-key interactive-haskell-mode-map (kbd "C-`") 'haskell-interactive-bring)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   169
(define-key interactive-haskell-mode-map (kbd "C-c C-k") 'haskell-interactive-mode-clear)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   170
(define-key interactive-haskell-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   171
(define-key interactive-haskell-mode-map (kbd "C-c c") 'haskell-process-cabal)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   172
(define-key interactive-haskell-mode-map (kbd "M-.") 'haskell-mode-goto-loc)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   173
(define-key interactive-haskell-mode-map (kbd "C-?") 'haskell-mode-find-uses)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   174
(define-key interactive-haskell-mode-map (kbd "C-c C-t") 'haskell-mode-show-type-at)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   175
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   176
(define-key haskell-mode-map (kbd "C-c i") 'hindent/reformat-decl)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   177
(define-key haskell-mode-map [f8] 'haskell-navigate-imports)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   178
(define-key haskell-mode-map (kbd "C-c C-u") 'haskell-insert-undefined)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   179
(define-key haskell-mode-map (kbd "C-c C-a") 'haskell-insert-doc)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   180
(define-key haskell-mode-map (kbd "C-<return>") 'haskell-simple-indent-newline-indent)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   181
(define-key haskell-mode-map (kbd "C-<right>") 'haskell-move-right)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   182
(define-key haskell-mode-map (kbd "C-<left>") 'haskell-move-left)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   183
(define-key haskell-mode-map (kbd "<space>") 'haskell-mode-contextual-space)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   184
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   185
(define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   186
(define-key haskell-cabal-mode-map [?\C-c ?\C-z] 'haskell-interactive-switch)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   187
(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   188
(define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   189
(define-key haskell-cabal-mode-map (kbd "C-c C-k") 'haskell-interactive-mode-clear)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   190
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   191
(define-key haskell-interactive-mode-map (kbd "C-c C-v") 'haskell-interactive-toggle-print-mode)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   192
(define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   193
(define-key haskell-interactive-mode-map [f12] 'haskell-process-reload-devel-main)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   194
(define-key haskell-interactive-mode-map (kbd "C-<left>") 'haskell-interactive-mode-error-backward)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   195
(define-key haskell-interactive-mode-map (kbd "C-<right>") 'haskell-interactive-mode-error-forward)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   196
(define-key haskell-interactive-mode-map (kbd "C-c c") 'haskell-process-cabal)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   197
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   198
(define-key shm-map (kbd "C-c C-p") 'shm/expand-pattern)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   199
(define-key shm-map (kbd "C-c C-s") 'shm/case-split)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   200
(define-key shm-map (kbd "SPC") 'shm-contextual-space)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   201
(define-key shm-map (kbd "C-\\") 'shm/goto-last-point)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   202
(define-key shm-map (kbd "C-c C-f") 'shm-fold-toggle-decl)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   203
(define-key shm-map (kbd "C-c i") 'shm-reformat-decl)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   204
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   205
(turn-on-haskell-simple-indent)
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   206
(load "haskell-mode-autoloads.el")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   207
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   208
(message "Loading shm-init...done")
b5976ed7311a Big updates to haskell-mode stuff.
Luke Hoersten <Luke@Hoersten.org>
parents:
diff changeset
   209
(provide 'shm-init)