Никогда бы не подумал, что разные реализации лисп так сильно отличаются. К примеру задумал я следующее: сделать функцию для jabber.el, чтобы status-message рандомно выбирался из текстового файла - базы статусов. Накодил следующее:
(defun jabber-set-random-status ()
"Set random jabber status from database."
(interactive)
(setf db-status-array (make-array 5 :fill-pointer 0 :adjustable t :element-type 'string))
(let ((db-status-file (open "~/.emacs-jabber-status" :if-does-not-exist nil)))
(when db-status-file
(loop for db-status-line = (read-line db-status-file nil)
while db-status-line do (vector-push-extend db-status-line db-status-array))
(close db-status-file)))
(setq *jabber-current-show* "xa" *jabber-current-status* (elt db-status-array (random (- (length db-status-array) 1))))
(jabber-send-current-presence))
Когда тестирую в обычном clisp - все работает. В elisp же матерится на open, make-array и т.д. Сильно не бейте, но подскажите - как реализовать это на elisp? А именно: прочитать текстовый файл в массив и присвоить значение рандомного элемента этого массива - переменной.