Skip to content

Commit 4d57c41

Browse files
committed
Merge pull request #767 from deepfire/random-refactoring
Refactorings around haskell-process
2 parents 77de4db + a674181 commit 4d57c41

File tree

1 file changed

+25
-36
lines changed

1 file changed

+25
-36
lines changed

haskell-load.el

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -85,40 +85,28 @@ actual Emacs buffer of the module being loaded."
8585
(when (get-buffer (format "*%s:splices*" (haskell-session-name session)))
8686
(with-current-buffer (haskell-interactive-mode-splices-buffer session)
8787
(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)))))
122110

123111
(defun haskell-process-suggest-imports (session file modules ident)
124112
"Given a list of MODULES, suggest adding them to the import section."
@@ -232,8 +220,9 @@ actual Emacs buffer of the module being loaded."
232220
(session (haskell-process-session process))
233221
(message-count 0)
234222
(cursor (haskell-process-response-cursor process)))
223+
;; XXX: what the hell about the rampant code duplication?
235224
(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)
237226
(setq message-count (1+ message-count)))
238227
(haskell-process-set-response-cursor process cursor)
239228
(let ((msg (format "Complete: cabal %s (%s compiler messages)"
@@ -276,7 +265,7 @@ actual Emacs buffer of the module being loaded."
276265
(modules (split-string modules-string ", ")))
277266
(cons modules modules-string)))
278267

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)
280269
"Trigger handling type errors or warnings. Either prints the
281270
messages in the interactive buffer or if CONT is specified,
282271
passes the error onto that."

0 commit comments

Comments
 (0)