Предположим, у вас запущен emacs и вы получили SLIME из
CVS и установил его. Это должно быть легко с любым дистрибутивом Linux; apt-get install emacs slime
делает это для меня. (Вам также следует установить SBCL, лучшую реализацию Common Lisp.)
SLIME из коробки больше ничего не делает, поэтому ему нужно
конфигурации. Конфигурирование emacs выполняется в вашем файле ~/.emacs
.
Посетите этот файл (C-x C-f ~/.emacs)
. У меня есть что-то вроде этого,
который загружает множество вкусностей:
(eval-after-load "slime"
'(progn
(setq slime-lisp-implementations
'((sbcl ("/usr/bin/sbcl"))
(ecl ("/usr/bin/ecl"))
(clisp ("/usr/bin/clisp"))))
(slime-setup '(
slime-asdf
slime-autodoc
slime-editing-commands
slime-fancy-inspector
slime-fontifying-fu
slime-fuzzy
slime-indentation
slime-mdot-fu
slime-package-fu
slime-references
slime-repl
slime-sbcl-exts
slime-scratch
slime-xref-browser
))
(slime-autodoc-mode)
(setq slime-complete-symbol*-fancy t)
(setq slime-complete-symbol-function
'slime-fuzzy-complete-symbol)))
(require 'slime)
Если в вашем «каталоге сайтов» не установлен SLIME, вы
также хочу добавить это перед этими строками:
(add-to-list 'load-path "~/elisp/slime/")
(add-to-list 'load-path "~/elisp/slime/contrib")
(Измените эти пути в правильное местоположение, конечно.)
Ключевой частью является настройка слизи, которая загружает множество дополнительных
модули, в том числе REPL. (Я также считаю причудливый отступ,
и автодок необходимо.)
В любом случае, вы можете загрузить это в свой запущенный emacs с помощью M-x
eval-buffer
, или поместив точку внутри каждого пола и нажав
C-M-x
. (Вы также можете указать на конец секса и нажать C-x
C-e
. Существует множество способов оценить Emacs Lisp в Emacs,
но это не очень важно для изучения CL.)
На этом этапе вы сможете набрать M-x slime
и перейти к
ваш ответ. Прежде чем это произойдет, ваш список будет загружен, SLIME будет
скажи ему, чтобы скомпилировать Swank (сторона CL SLIME), и ты увидишь, что
бывает. Это происходит только один раз, но в следующий раз SLIME запустится
быстрее.
В REPL вы можете вводить команды Common Lisp и видеть результат
их оценка. Нажатие клавиши TAB для завершения чего-либо вызовет
окно возможных завершений; это умное завершение, поэтому печатать
что-то вроде "d-b" вызовет список, содержащий
«Деструктурирующий-связывать». Очень полезно. M- / также завершит символы
что вы уже набрали где-то внутри Emacs; другое прекрасное время
заставки. (Это работает везде в Emacs, кстати, и называется "динамическим
расширение аббревиатура ".)
Ранее вы сказали, что REPL был скучным, поэтому давайте откроем настоящий файл.
Нажмите C-x C-f test.lisp
. Не удивительно, что это откроет
буфер редактирования test.lisp, который будет создан при первом сохранении
файл (C-x C-s
). Этот файл Lisp знает о SLIME, так что ничего
тип можно легко проверить с помощью запущенного Lisp. Завершение вкладки,
Доступна проверка класса, интерактивное тестирование и т. д.
Например, введите что-то вроде (+ 1 2)
и нажмите C-x C-e
. Вы
увидим результат, оцененный запущенным Лиспом, внизу
окна. Это позволяет вам тестировать отдельные выражения при вводе
их в файл.
Следующим шагом является написание полной функции, возможно:
(defun my-1+ (x)
(+ x 1))
Вы можете загрузить эту функцию в работающий Lisp различными способами;
Я обычно использую C-M-x
. Теперь вы можете вернуться обратно в буфер REPL
(C-x b *slime-repl sbcl*
или аналогичный) и введите (my-1+ 42)
и посмотрите
результат 43
напечатан.
Еще один способ перенести функции в работающий Лисп - это скомпилировать
и загрузите весь файл с помощью C-c C-k
.
В любом случае, это основы использования SLIME и Emacs. Есть
очевидно, доступно гораздо больше функций, но это должно дать вам
вкус программирования на Лиспе с SLIME. Последнее, что я упомяну,
Emacs в значительной степени самодокументируется, поэтому, если вы хотите узнать больше, Emacs
могу помочь тебе. Находясь в буфере Lisp, вы можете набрать C-h m
, чтобы получить
полный список команд, которые вы можете использовать при редактировании Lisp. Вы можете нажать
ссылки для получения дополнительной информации о каждой функции.
Веселись!