@@ -85,40 +85,28 @@ actual Emacs buffer of the module being loaded."
85
85
(when (get-buffer (format " *%s :splices* " (haskell-session-name session)))
86
86
(with-current-buffer (haskell-interactive-mode-splices-buffer session)
87
87
(erase-buffer )))
88
- (cond ((haskell-process-consume process " Ok, modules loaded: \\ (.+\\ )\\ .$" )
89
- (let* ((modules (haskell-process-extract-modules buffer))
90
- (cursor (haskell-process-response-cursor process)))
91
- (haskell-process-set-response-cursor process 0 )
92
- (let ((warning-count 0 ))
93
- (while (haskell-process-errors-warnings session process buffer)
94
- (setq warning-count (1+ warning-count)))
95
- (haskell-process-set-response-cursor process cursor )
96
- (if (and (not reload)
97
- haskell-process-reload-with-fbytecode)
98
- (haskell-process-reload-with-fbytecode process module-buffer)
99
- (haskell-process-import-modules process (car modules)))
100
- (haskell-mode-message-line
101
- (if reload " Reloaded OK." " OK." ))
102
- (when cont
103
- (condition-case e
104
- (funcall cont t )
105
- (error (message " %S " e))
106
- (quit nil ))))))
107
- ((haskell-process-consume process " Failed, modules loaded: \\ (.+\\ )\\ .$" )
108
- (let* ((modules (haskell-process-extract-modules buffer))
109
- (cursor (haskell-process-response-cursor process)))
110
- (haskell-process-set-response-cursor process 0 )
111
- (while (haskell-process-errors-warnings session process buffer))
112
- (haskell-process-set-response-cursor process cursor )
113
- (if (and (not reload) haskell-process-reload-with-fbytecode)
114
- (haskell-process-reload-with-fbytecode process module-buffer)
115
- (haskell-process-import-modules process (car modules)))
116
- (haskell-interactive-mode-compile-error session " Compilation failed." )
117
- (when cont
118
- (condition-case e
119
- (funcall cont nil )
120
- (error (message " %S " e))
121
- (quit nil )))))))
88
+ (let* ((ok (cond ((haskell-process-consume process " Ok, modules loaded: \\ (.+\\ )\\ .$" ) t )
89
+ ((haskell-process-consume process " Failed, modules loaded: \\ (.+\\ )\\ .$" ) nil )
90
+ (t (error (message " Unexpected response from haskell process. " )))))
91
+ (modules (haskell-process-extract-modules buffer))
92
+ (cursor (haskell-process-response-cursor process))
93
+ (warning-count 0 ))
94
+ (haskell-process-set-response-cursor process 0 )
95
+ (while (haskell-process-errors-warnings module-buffer session process buffer)
96
+ (setq warning-count (1+ warning-count)))
97
+ (haskell-process-set-response-cursor process cursor )
98
+ (if (and (not reload)
99
+ haskell-process-reload-with-fbytecode)
100
+ (haskell-process-reload-with-fbytecode process module-buffer)
101
+ (haskell-process-import-modules process (car modules)))
102
+ (if ok
103
+ (haskell-mode-message-line (if reload " Reloaded OK." " OK." ))
104
+ (haskell-interactive-mode-compile-error session " Compilation failed." ))
105
+ (when cont
106
+ (condition-case e
107
+ (funcall cont ok)
108
+ (error (message " %S " e))
109
+ (quit nil )))))
122
110
123
111
(defun haskell-process-suggest-imports (session file modules ident )
124
112
" Given a list of MODULES, suggest adding them to the import section."
@@ -232,8 +220,9 @@ actual Emacs buffer of the module being loaded."
232
220
(session (haskell-process-session process))
233
221
(message-count 0 )
234
222
(cursor (haskell-process-response-cursor process)))
223
+ ; ; XXX: what the hell about the rampant code duplication?
235
224
(haskell-process-set-response-cursor process 0 )
236
- (while (haskell-process-errors-warnings session process response)
225
+ (while (haskell-process-errors-warnings nil session process response)
237
226
(setq message-count (1+ message-count)))
238
227
(haskell-process-set-response-cursor process cursor )
239
228
(let ((msg (format " Complete: cabal %s (%s compiler messages) "
@@ -276,7 +265,7 @@ actual Emacs buffer of the module being loaded."
276
265
(modules (split-string modules-string " , " )))
277
266
(cons modules modules-string)))
278
267
279
- (defun haskell-process-errors-warnings (session process buffer &optional return-only )
268
+ (defun haskell-process-errors-warnings (module-buffer session process buffer &optional return-only )
280
269
" Trigger handling type errors or warnings. Either prints the
281
270
messages in the interactive buffer or if CONT is specified,
282
271
passes the error onto that."
0 commit comments