
On Jan 11, 2008 12:05 AM, Stefan Monnier
First of all, thanks. My Aqua Emacs (on OS X Leopard) hangs when I send a command like C-c C-l or C-c C-t to the interpreter (I can quit the command using C-g) . Starting the interpreter and using :l from inside it works fine. This is using GHC 6.8 (and I think I also tried 6.6.) What could be the problem?
I also tried to eval this but it didn't make a difference:
(setq inferior-haskell-find-project-root nil)
It looks like this is a problem with 6.8.2 as haskell-mode-2.3 has the same problem? Seems like the commands being sent to the haskell process never reaches it.
Try can you try to look into the nature of the hang? Is Emacs completely frozen? Does C-g get you back to something usable? If so, can you set Options => Enter Debugger on Quit, then reproduce the problem than hit C-g and show me the backtrace? If not, can you run Emacs under a debugger and give me a backtrace of when Emacs is frozen?
Emacs is completely frozen until I press C-g and then it goes back to normal (without loading the file). Here's the back trace: Debugger entered--Lisp error: (quit) accept-process-output(#<process haskell>) (and (not (re-search-forward comint-prompt-regexp nil t)) (accept-process-output proc)) (progn (goto-char comint-last-input-end) (and (not ...) (accept-process-output proc))) (while (progn (goto-char comint-last-input-end) (and ... ...))) (save-current-buffer (set-buffer (process-buffer proc)) (while (progn ... ...))) (with-current-buffer (process-buffer proc) (while (progn ... ...))) inferior-haskell-wait-for-prompt(#<process haskell>) (save-current-buffer (set-buffer (process-buffer proc)) (inferior-haskell-wait-for-prompt proc) (goto-char (process-mark proc)) (insert-before-markers str) (move-marker comint-last-input-end (point)) (comint-send-string proc str)) (with-current-buffer (process-buffer proc) (inferior-haskell-wait-for-prompt proc) (goto-char (process-mark proc)) (insert-before-markers str) (move-marker comint-last-input-end (point)) (comint-send-string proc str)) inferior-haskell-send-command(#<process haskell> ":cd /Users/tibell/src/hyena/") (if (equal default-directory root) nil (setq default-directory root) (inferior-haskell-send-command proc (concat ":cd " default-directory))) (unless (equal default-directory root) (setq default-directory root) (inferior-haskell-send-command proc (concat ":cd " default-directory))) (progn (unless (equal default-directory root) (setq default-directory root) (inferior-haskell-send-command proc ...)) (setq file (file-relative-name file))) (if (and inferior-haskell-find-project-root (setq root ...)) (progn (unless ... ... ...) (setq file ...))) (when (and inferior-haskell-find-project-root (setq root ...)) (unless (equal default-directory root) (setq default-directory root) (inferior-haskell-send-command proc ...)) (setq file (file-relative-name file))) (let ((parsing-end ...) root) (when (and inferior-haskell-find-project-root ...) (unless ... ... ...) (setq file ...)) (inferior-haskell-send-command proc (if reload ":reload" ...)) (if (boundp ...) (if ... ... ...))) (save-current-buffer (set-buffer (process-buffer proc)) (compilation-forget-errors) (let (... root) (when ... ... ...) (inferior-haskell-send-command proc ...) (if ... ...)) (with-selected-window (display-buffer ...) (goto-char ...)) (when inferior-haskell-wait-and-jump (inferior-haskell-wait-for-prompt proc) (ignore-errors ...))) (with-current-buffer (process-buffer proc) (compilation-forget-errors) (let (... root) (when ... ... ...) (inferior-haskell-send-command proc ...) (if ... ...)) (with-selected-window (display-buffer ...) (goto-char ...)) (when inferior-haskell-wait-and-jump (inferior-haskell-wait-for-prompt proc) (ignore-errors ...))) (let ((buf ...) (file buffer-file-name) (proc ...)) (with-current-buffer (process-buffer proc) (compilation-forget-errors) (let ... ... ... ...) (with-selected-window ... ...) (when inferior-haskell-wait-and-jump ... ...))) inferior-haskell-load-file(nil) call-interactively(inferior-haskell-load-file)