2012-06-02 13 views
5

Próbuję załadować hunchentoot poprzez quicklisp w slime i otrzymuję następujący błąd:Jak uzyskać quicklisp do załadowania rfc2388 w slime?

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] 

uzyskać to podczas próby uruchomienia albo:

(ql:quickload "hunchentoot") 

lub po prostu:

(ql:quickload "rfc2388") 

Wygląda na to, że inne są również gettingthis. Znalazłem jeden hint przy ewentualnej odpowiedzi, mówiąc:

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. 

Stamtąd Próbowałem (na podstawie np [to] dodanie następujących do mojego 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) 

Ale .. Nadal dostaję ten sam błąd, nawet po całkowitym ponownym uruchomieniu emacsa, aby upewnić się, że mam świeżego Slime'a czytającego powyższą konfigurację

Więc, czego mi brakuje i/lub w jaki sposób mogę uzyskać to do załadowania?

Z góry dziękuję! (Więcej dziękuję za udaną odpowiedź;)

+0

spróbuj tego: (setq slime-net-coding-system 'utf-8-unix) –

+0

@VsevolodDyomkin: Zauważysz, że próbowałem tego (zobacz ostatni wiersz ostatniego bloku tekstu) już .. Czy jest coś, co muszę zrobić, aby sbcl sam to zobaczył? Ta zmienna wydaje się (jeśli czytam poprawnie dokumentację) do kontrolowania połączeń sieciowych (jak sądzę przy pomocy swank?), Ale co kontroluje, z czym uruchamiany jest SBCL? – lindes

Odpowiedz

2

Czy sprawdziłeś swoje ustawienia regionalne? Konfiguracja Emacsa mówi tylko, jakie systemy kodowania ustawić dla komunikacji pomiędzy SLIME i SWANK.

Możesz sprawdzić ustawienia regionalne z/usr/bin/locale, na przykład:

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 ~ » 

Kopalnia jest ustawiony na UTF-8 wszędzie, jak widać, z wyjątkiem wyświetlania komunikatów 'C'.

+2

Dodanie '(setenv" LANG "" en_US.UTF-8 ")' do mojego pliku init emacsa (i ponowne uruchomienie, jako leniwy sposób ponownego uruchomienia slime/sbcl) rzeczywiście rozwiązało problem. Dzięki! (Ta odpowiedź nie dała tego dokładnie, ale wskazała mi kierunek, w którym potrzebowałem, i to jest doceniane.) – lindes

-1

Powinien znajdować się katalog .cache w twoim DOMU, który zawiera wszystkie pliki fasla. Czasami usunięcie tych starych plików fasla wydaje się działać dla mnie, gdy coś pójdzie nie tak z kompilacją.

+0

Zmieniłem ich nazwę i wydaje się, że nie miało to znaczenia. Jestem prawie pewny, że jest jakieś ustawienie, aby uzyskać odpowiedni system kodowania, a to byłby tylko bufor skompilowany - nie mogę jednak skompilować pliku. Mogę sobie wyobrazić, że coś wcześniej skompilowane może przeszkadzać, ale ... nic nie zmienia. – lindes

0

Spróbuj tego:

zmiany do .../quicklisp/dists/quicklisp/Oprogramowanie/rfc2388 * katalog i rfc2388.asd obciążenie do edytora tekstowego. Przenieś w dół do: author parametru formularza defsystem. Zastąp nazwisko autora nazwą podaną w górnej części pliku. Przechowuj plik przy użyciu kodowania ASCII.

Oczywiście po opublikowaniu nowej wersji biblioteki obejście zostanie zerwane. Lub też zmodyfikuj zmodyfikowany projekt w lokalnych projektach.

+0

Jestem o wiele szczęśliwszy, znajdując rozwiązanie, które nie wymaga zmiany reprezentacji czyjegoś imienia ani zarządzania łatami. Jestem pewien, że to by zadziałało, ale ustawienie LANG uderza mnie jako (w większości co najmniej) szczęśliwsze rozwiązanie. Myślę, że moje dni zakładania LANG = C prawdopodobnie zbliżają się do końca. :) – lindes

0

Oryginalne kodowanie UTF-8 nadal działa, DEBUGGER powinien prezentować opcję INPUT-REPLACEMENT, aby zastąpić niepoprawne znaki wejściowe przez ciąg zastępczy. Wybierz tę opcję, wpisz "?" lub "x" lub dowolny ciąg, który ci się podoba, a następnie ENTER. Obciążenie następnie się kończy. Oczywiście nie jest to coś, co chciałbyś robić za każdym razem.

Najlepszym pomysłem jest wysłanie e-maila do autora i poproszenie o dostarczenie wersji ascii dla quicklisp.

+0

Hmm, nie pamiętam, że widziałem tę opcję w debugerze ... Restarty, które były mi dostępne, to: '0: [ABORT] Przerwij ładowanie pliku" [...]/rfc2388.asd ". 1: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] ​​Ponownie wyszukaj system rfc2388 po reinicjowaniu rejestru źródłowego. 2: [ABORT] Poddaj się "rfc2388" 3: [RETRY] ​​Ponów próbę żądania oceny REPLITU SLIM. 4: [* ABORT] Wróć na najwyższy poziom SLIME. 5: [ABORT] Przerwij wątek (# ) '- co spodziewałeś się tam zobaczyć? – lindes

Powiązane problemy