Замораживание строки чтения LispCabinet

Я время от времени играю с LispCabine, учусь в свободное время. То, что работает на моем ПК дома и на рабочем ПК на моей старой работе, кажется, замораживает Emacs или SLIME на моей новой работе.

Я просматриваю практический Common Lisp для переподготовки, и эта функция:

(defun prompt-read (prompt)
  (format *query-io* "~a: " prompt)
  (force-output *query-io*)
  (read-line *query-io*))

отлично работает дома. Однако запуск его на работе зависает после ввода нескольких символов, пока я не убью интерпретатор. Я сузил его до

(read-line *query-io*)

так как запуск этого сам по себе вызовет зависание. Следующее также не работает:

(read *query-io*)
(read-line *standard-input*)
(read *standard-input*)

Я совершенно озадачен тем, что может быть причиной этого. Любые идеи?

Я использую LispCabinet 0.3.3 в Windows 7 Pro SP1.

LispBox работает нормально, но даже возвращаясь к более ранним версиям LispCabine, я все равно сталкиваюсь с той же ошибкой.


person Chris Doggett    schedule 20.09.2012    source источник


Ответы (1)


Пакетные файлы предназначены только для выполнения из командной оболочки Emacs или внешней командной оболочки, запущенной из меню '((' (все переменные среды настраиваются во время инициализации Emacs). Я только что попытался выполнить код, который вы разместили в stackoverflow в SBCL SLIME REPL (его также можно запустить из меню '(('), и он отлично работает на моей установке. Проблема все еще присутствует в оболочке, и я предполагаю, что это проблема ввода-вывода Unicode SBCL (LispCabinet использует неофициальную версию SBCL).Вы можете попробовать установить официальную версию в '/bin/sbcl/' или использовать ClozureCL, если хотите использовать командную оболочку вместо SLIME REPL (но SLIME гораздо удобнее).

person gchristnsn    schedule 21.09.2012
comment
Думаю, я понял это. Я попробовал официальный SBCL, и он работал в версии для командной строки, но не в Emacs. Я почти уверен, что это был либо режим Anything, либо автозаполнение. Когда он завис, в строке состояния показывался конвейерный запрос swank:fuzzy-completions ‹what_i_typed_so_far›. Переустановка без режима автозаполнения и любого режима снова работает. Я постараюсь выяснить, какой из двух это был. - person Chris Doggett; 24.09.2012
comment
Оказалось, что режим автозаполнения сломал его. - person Chris Doggett; 24.09.2012
comment
Неа. Только что убедился, что он все еще не работает при новой установке Windows 8. Приходится запускать режим автозаполнения M-x, чтобы отключить его, прежде чем запускать какой-либо код, который считывает ввод. - person Chris Doggett; 26.09.2012
comment
Очень сложно понять, что на самом деле происходит с режимом переменного тока. Можно добавить следующую строку в файл .emacs, чтобы отключить его в буфере REPL: (setq ac-modes (delq 'slime-repl-mode ac-modes)) - person gchristnsn; 09.10.2012
comment
@gchristnsn: Похоже, это исправлено. Спасибо еще раз! - person Chris Doggett; 16.10.2012