forked from mirrors/org-mode
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
This commit is contained in:
parent
1187538a21
commit
b467877437
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue