2012-06-02 7 views
5

estoy tratando de cargar a través de hunchentootquicklisp en slime, y conseguir el error siguiente:¿Cómo obtengo quicklisp para cargar rfc2388 en limo?

READ error during COMPILE-FILE: 

    :ASCII stream decoding error on 
    #<SB-SYS:FD-STREAM 
    for "file [redacted]/dists/quicklisp/software/rfc2388-20120107-http/rfc2388.asd" 
    {100607B723}>: 

    the octet sequence #(196) cannot be decoded. 

    (in form starting at line: 29, column: 29, 
    file-position: 1615) 
[Condition of type ASDF:LOAD-SYSTEM-DEFINITION-ERROR] 

consigo esto al intentar ejecutar cualquiera:

(ql:quickload "hunchentoot") 

O simplemente:

(ql:quickload "rfc2388") 

Parece que otros son gettingthis también. He encontrado una hint a una posible respuesta, diciendo:

The system file is encoded as UTF-8. 
I'm not sure how to configure things so that SBCL on Windows starts with 
UTF-8 as its default encoding for loading sources, but that's what you 
need to do. 

A partir de ahí, he tratado (por ejemplo, sobre la base de [esta] añadiendo lo siguiente a mi emacs config:

(set-language-environment "UTF-8") 
(setq slime-lisp-implementations 
     '((sbcl ("/opt/local/bin/sbcl") :coding-system utf-8-unix))) 
(setq slime-net-coding-system 'utf-8-unix) 

Pero .. Todavía me da el mismo error, incluso después de reiniciar completamente emacs, para asegurarme de tener un Slime nuevo que estaba leyendo la configuración anterior.

Entonces, ¿qué es lo que me falta y/o cómo puedo obtenerlo? esto para cargar?

¡Gracias de antemano! (Más gracias a venir por una respuesta exitosa.;)

+0

prueba esto: (setq slime-net-coding-system 'utf-8-unix) –

+0

@VsevolodDyomkin: Notarás que ya lo he intentado (ver la última línea del último bloque de texto) .. ¿Hay algo que deba hacer para que sbcl vea esto? Esa variable parece (si estoy leyendo la documentación correctamente) controlar las conexiones de red (supongo que con swank?), Pero ¿qué controla con qué SBCL se lanza? – lindes

Respuesta

2

¿Ha comprobado la configuración regional? La configuración de Emacs solo le dice qué sistemas de codificación establecer para la comunicación entre SLIME y SWANK.

Puede comprobar si la configuración regional con/usr/bin/locale, por ejemplo:

navi ~ » locale 
LANG=pl_PL.UTF-8 
LC_CTYPE=pl_PL.UTF-8 
LC_NUMERIC=pl_PL.UTF-8 
LC_TIME=pl_PL.UTF-8 
LC_COLLATE="pl_PL.UTF-8" 
LC_MONETARY=pl_PL.UTF-8 
LC_MESSAGES=C 
LC_PAPER=pl_PL.UTF-8 
LC_NAME="pl_PL.UTF-8" 
LC_ADDRESS="pl_PL.UTF-8" 
LC_TELEPHONE="pl_PL.UTF-8" 
LC_MEASUREMENT=pl_PL.UTF-8 
LC_IDENTIFICATION=pl_PL.UTF-8 
LC_ALL= 
navi ~ » 

mina está configurado para UTF-8 en todas partes, como se puede ver, excepto para la visualización de mensajes de 'C'.

+2

Agregar '(setenv" LANG "" en_US.UTF-8 "' a mi archivo de inicio de emacs (y reiniciar, como una forma perezosa de volver a iniciar slime/sbcl) solucionó el problema. ¡Gracias! (Esta respuesta no dio exactamente eso, pero me indicó la dirección que necesitaba, y eso es de agradecer). – lindes

-1

Debe haber un directorio .cache en su HOME que contenga todos los archivos fasl. A veces, eliminar esos viejos archivos fasl parece funcionar para mí cuando algo sale mal con la compilación.

+0

Los renuncié y no parece haber hecho una diferencia. Estoy bastante seguro de que hay algún tipo de ajuste para obtener el sistema de codificación correcto que se requiere, y esto solo sería un caché de algo compilado. Sin embargo, no puedo compilar el archivo. Podría imaginar que algo previamente compilado podría interferir, pero ... no parece cambiar nada. – lindes

0

Prueba esto:

cambio en el .../quicklisp/dists/quicklisp/software/rfc2388 * directorio y rfc2388.asd carga en un editor de texto. Desplácese hasta el parámetro: author del formulario defsystem. Reemplace el nombre del autor por el nombre dado en la parte superior del archivo. Almacenar archivo usando codificación ASCII.

Por supuesto, cuando se publica una nueva versión de la biblioteca, la solución se pierde. O bien almacenar el proyecto modificado en proyectos locales.

+0

Estoy mucho más feliz de encontrar una solución que no requiera que cambie la representación del nombre de alguien, ni administre parches en las cosas. Estoy seguro de que esto hubiera funcionado, pero configurar LANG me parece una solución (la mayoría de las veces) más feliz. Creo que mis días de solo asumir que LANG = C probablemente estén llegando a su fin. :) – lindes

0

Con la codificación UTF-8 original aún vigente, el DEBUGGER debe presentar una opción INPUT-REPLACEMENT para reemplazar los caracteres de entrada ofensivos por una cadena de reemplazo. Elija esa opción, escriba "?" o "x" o cualquier cadena que te guste en el prompt y luego ENTER. La carga se completa. Por supuesto, eso no es algo que le gustaría hacer cada vez.

Así que la mejor idea es, probablemente, enviar un correo electrónico al autor y solicitar una versión de ASCII para el quicklisp.

+0

Hmm, no recuerdo haber visto esa opción en el depurador ... Los reinicios que estaban disponibles para mí eran: '0: [ABORTAR] Cancelar el archivo de carga" [...]/rfc2388.asd ". 1: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] ​​Vuelva a intentar encontrar el sistema rfc2388 después de reiniciar el origen-registro. 2: [ABORTAR] Renunciar a "rfc2388" 3: [RETRY] ​​Reintentar la solicitud de evaluación de SLIME REPL. 4: [* ABORT] Regresa al nivel superior de SLIME. 5: [ABORTAR] Anular thread (# ) '- ¿Qué esperabas ver allí? – lindes

Cuestiones relacionadas