summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoro Rose <doroerose@gmail.com>2017-12-02 22:25:54 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-12-11 15:11:56 +0100
commitb4678774375251927d002811ff1d32426503eef8 (patch)
tree82980bdc6487b790e10a2f3bee040b0a68141764
parent1187538a212112708993b44e6b814f1a70e9f6ce (diff)
downloadorg-mode-b4678774375251927d002811ff1d32426503eef8.tar.gz
Fix ob-haskell.el to work with custom ghci prompts
* lisp/ob-haskell.el (haskell-prompt-regexp): Define defvar `haskell-prompt-regexp`. This variable will override the variable set by inf-haskell, when `org-babel-execute:haskell` is called. (org-babel-execute:haskell): Make sure that `comint-prompt-regexp` is set appropriately to enable correct parsing of "λ"-prompts. Set `comint-preoutput-filter-functions` appropriately to enable correct parsing of coloured ghci prompts. The problem was that code sent back from the inf-haskell buffer to org-babel wasn't parsed correctly in `org-babel-comint-with-output`. This occured when the user uses the commonly used "λ"-prompt. TINYCHANGE
-rw-r--r--lisp/ob-haskell.el9
1 files changed, 9 insertions, 0 deletions
diff --git a/lisp/ob-haskell.el b/lisp/ob-haskell.el
index cc78bec..faf976b 100644
--- a/lisp/ob-haskell.el
+++ b/lisp/ob-haskell.el
@@ -59,14 +59,23 @@
(defvar org-babel-haskell-eoe "\"org-babel-haskell-eoe\"")
+(defvar haskell-prompt-regexp)
+
(defun org-babel-execute:haskell (body params)
"Execute a block of Haskell code."
+ (require 'inf-haskell)
+ (add-hook 'inferior-haskell-hook
+ (lambda ()
+ (setq-local comint-prompt-regexp
+ (concat haskell-prompt-regexp "\\|^λ?> "))))
(let* ((session (cdr (assq :session params)))
(result-type (cdr (assq :result-type params)))
(full-body (org-babel-expand-body:generic
body params
(org-babel-variable-assignments:haskell params)))
(session (org-babel-haskell-initiate-session session params))
+ (comint-preoutput-filter-functions
+ (cons 'ansi-color-filter-apply comint-preoutput-filter-functions))
(raw (org-babel-comint-with-output
(session org-babel-haskell-eoe t full-body)
(insert (org-trim full-body))