2011-11-01 10 views
12

Cuando estoy en un archivo Haskell, uso C-c C-l para ejecutar el comando inferior-haskell-load-file que está destinado a cargar el archivo actual en el intérprete GHCI pero Emacs simplemente cuelga hasta que pulse C-g. ¿Alguien sabe cómo puedo hacer que esto funcione?Emacs se cuelga en modo haskell con llamada de archivo de carga de haskell inferior

GNU Emacs 23.3.1 (x86_64-pc-linux-gnu, GTK + Versión 2.24.5) de 2011-08-14 en la pimienta de Jamaica, modificado por Debian

Uso de modo Haskell versión v2.7.0

+1

¿Tiene un archivo '.ghci' personalizado? Eso podría interferir, especialmente si cambia el aviso ... De lo contrario, ¿tiene un problema si inicia con "emacs -Q" y luego carga explícitamente solo los valores predeterminados? – ivanm

+0

@ivanm eso fue todo! Agréguelo como la respuesta por favor. –

Respuesta

11

inferior-haskell-mode realiza algunos análisis basados ​​en el indicador esperado de ghci. Como tal, si cambia el indicador en un archivo .ghci, entonces no puede detectarlo.

Para obtener más información, ver donde haskell-ghci.el establece el valor comint-prompt-regexp para determinar lo que es un indicador de .

;; GHCi prompt should be of the form `ModuleName> '. 
(setq comint-prompt-regexp 
     "^\\*?[[:upper:]][\\._[:alnum:]]*\\(\\*?[[:upper:]][\\._[:alnum:]]*\\)*> ") 

Si desea mantener la configuración en el archivo de .ghci, entonces puede ser posible personalizar esta configuración.

+0

Un gran consejo. Muchas gracias. Me has ahorrado un montón de dolor de cabeza. –

+0

Muchos de nosotros tenemos esto en .ghci: ': set prompt" λ> "'. Sería bueno incluir λ por defecto en el patrón. – gawi

+0

No tengo suerte intentando modificar la expresión regular para aceptar "λ>". Este debe ser un problema no relacionado con ASGI ... – gawi

0

Tuve un problema similar causado por GHCi que informaba algún tipo de error en el arranque, haciendo que el modo haskell de Emacs esperara el aviso GHCi indefinidamente (GHCi no mostró el prompt estándar (Prelude>), sino que simplemente mostró >). Puede intentar ejecutar GHCi externamente y ver si informa algún error.

+0

Parece que no informa ningún error. ¿Qué tipo de errores y a qué se refiere específicamente? –

3

Una vieja pregunta, pero como acabo de encontrarme con esto hoy, quería compartir cómo personalizar realmente comint-prompt-regexp ya que tuve que resolverlo.

Esta personalización reconocerá λ> solicitudes, o en realidad cualquier carácter individual antes de >), pero no rompe la expresión regular existente. En su .emacs:

(load-library "inf-haskell") 

(defun my-inf-haskell-hook() 
    (setq comint-prompt-regexp 
     (concat comint-prompt-regexp "\\|^.> "))) 

(add-to-list 'inferior-haskell-mode-hook 'my-inf-haskell-hook) 

Puede añadir más puntos a "\\|^.> " reconocer el símbolo más tiempo, pero quería mantenerlo de longitud fija por simplicidad.

0

Recibí el mismo mensaje de error cuando traté de usar la pila con emacs. Para mí, agregar esta línea a mi .emacs/init.el resolvió el problema:

(setq haskell-program-name "stack ghci") 
Cuestiones relacionadas