Регистрация | Войти
Lisp — программируемый язык программирования
RSS
SLIME & LispWorks 6.0.1 Professional
lithp - 08.02.2011 12:16, Сообщений - 3
Имеется следующее окружeние: GNU Emacs 23, SLIME & LispWorks 6.0.1 Professional.

Все лисповые пакеты, включая SLIME и FLEXI-STREAMS поставлены из последнего
апдейта Quicklisp.

В конфигурации емакса для SLIME, стоит кодировка 'utf-8-unix' по умолчанию +
прописано для всех реализаций, которые у меня стоят, на всякий случай.

В пользовательской конфигурации '.lispworks' прописана только загрузка
Quicklisp и FLEXI-STREAMS (для SLIME).

В LispWorks'овом IDE ввод не-аscii символов работает без проблем.

В емаксе же не работает ввод не-аscii символов в REPL SLIME'a под LispWorks. Для
всех остальных CL реализациий ввод работает без проблем.

Если запустить SLIME используя slime-connect к LispWorks запущенным отдельным
процессом (вне емакса), то ввод не-аscii символов просто убивает сессию и
соединение со SWANK обрывается с сообщением:

;; swank:close-connection: End of file while reading stream #<SYSTEM::STRING-INPUT-STREAM 2178D85B>.


Если же запустить LispWorks из емакса, то ввод не-аscii символов убивает SWANK сессию вместе с запущенным лисп-процессом:

Вывод в *inferior-lisp*:

close-connection: #\\x0445 is not of type COMMON-LISP:BASE-CHAR. ...
;; Event history end.
;; Backtrace:
(0 (DBG::GET-CALL-FRAME 51 142419989))
(1 (SWANK::SAFE-BACKTRACE))
(2 (SWANK::MAKE-SWANK-ERROR #<TYPE-ERROR 200A069F> :DONT-KNOW))
(3 ((SUBFUNCTION 1 SWANK::DECODE-MESSAGE) :DONT-KNOW))
(4 (SIGNAL #<TYPE-ERROR 200A069F>))
(5 [error printing frame])
(6 [error printing frame])
(7 (SYSTEM::SET-AREF1))
(8 ((METHOD FLEXI-STREAMS::READ-SEQUENCE* (FLEXI-STREAMS::FLEXI-UTF-8-FORMAT T T T T)) ..))
(9 (CLOS::METHOD-COMBINATION-TEMPLATE))
(10 (CLOS::GENERIC-FUNCTION-DISCRIMINATOR))
(11 (SWANK-RPC::READ-CHUNK #<FLEXI-STREAMS:FLEXI-IO-STREAM 21C0D4C7> 82))
(12 (SWANK-RPC::READ-PACKET #<FLEXI-STREAMS:FLEXI-IO-STREAM 21C0D4C7>))
(13 (SWANK-RPC:READ-MESSAGE :DONT-KNOW #<The SWANK-IO-PACKAGE package, 12/16 internal, 0/16 external>))
(14 (SWANK::DECODE-MESSAGE #<FLEXI-STREAMS:FLEXI-IO-STREAM 21C0D4C7>))
(15 (SWANK::READ-LOOP #<SWANK::CONNECTION 21C0D717>))
(16 (MP::PROCESS-SG-FUNCTION 0 NIL NIL))
(17 (SYSTEM::%%FIRST-CALL-TO-STACK))
;; Connection to Emacs lost. [
;;  condition: #\\x0445 is not of type BASE-CHAR.
;;  type: TYPE-ERROR
;;  encoding: utf-8-unix vs. NIL
;;  style: :SPAWN dedicated: NIL]


Непонятно откуда здесь вообще взялся base-char. Кто-нибудь сталкивался с этой проблемой?
[#]
Такое лучше спрашивать в англоязычном mail list по lispworks.
artem - 08.02.2011 17:19
[#]
Кстати, если кому интересно, то проблема решилась добавлением следующей строки в конфигурационный файл:

(lw:set-default-character-element-type 'character)

По умолчанию если запустить консольную версию, то lw:*default-character-element-type* уставлено в 'base-char, что покрывает только ASCII таблицу.

RTFM, как говорицца.
lithp - 26.04.2011 10:37
[#] Ответ на комментарий от lithp 26.04.2011 10:37
Черт, теперь компиляция по C-c C-c сломалась!

Фикс будет таким:

(lw:set-default-character-element-type 'lw:simple-char)


lithp - 26.04.2011 12:58
@2009-2013 lisper.ru