Документация в стиле man или javadoc для common lisp

Существуют ли какие-либо общие документы lisp, такие как javadoc, man или даже всплывающие окна, подобные intellisense? Я только начал изучать общий шепелявый язык и у меня недостаточно памяти для рук.

Я использую emacs и slime — есть автозавершение по табуляции, но оно кажется не очень информативным.

Спасибо!


person Arcadi Romm    schedule 25.06.2012    source источник
comment
c-h m в Emacs описывает режим SLIME. Используйте его для repl или для буфера кода. Он покажет вам все команды. Найдите документацию и окружающие команды. Если у вас есть Emacs с графическим интерфейсом, для него есть пункты меню.   -  person Rainer Joswig    schedule 25.06.2012


Ответы (2)


На всякий случай этот вопрос предназначался для того, чтобы спросить, где находится ссылка - в Интернете доступно несколько Hyperspecs. Если вы будете искать в Google что-то вроде «гиперспек-функция-имя», есть большая вероятность, что вы попадете на один из них.

http://clhs.lisp.se/Front/index.htm

http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/index.html

Например.

В зависимости от вашего редактора вы обычно можете настроить его так, чтобы он также отображал содержимое гиперспецификации. С SLIME в Emacs вы можете делать M-x slime-hyperspec-lookup RET symbol-to-look-for

Еще одним удобным инструментом является apropos. Запустив (apropos "substring-in-the-symbol-name"), вы получите список всех символов, которые соответствуют "подстроке-в-имя-символа".

Сам по себе SLIME обеспечивает хорошее автодополнение. Что может сбить вас с толку, так это то, что ключи по умолчанию могут быть привязаны к чему-то, что ваша система не отправляет в Emacs (например, M-TAB), чтобы перепривязать его к чему-то еще, что вы можете сделать (в вашем файле .emacs):

(define-key lisp-mode-map (kbd "C-x .")
  'slime-complete-symbol)
(define-key lisp-mode-map (kbd "C-x /")
  'slime-complete-form)
(define-key lisp-mode-map (kbd "C-x ,")
  'slime-fuzzy-complete-symbol)

Кроме того, Emacs сам по себе обеспечивает "лексическое" завершение - если вы нажмете M-/, это попытается завершить слово до слова с тем же суффиксом - это работает на удивление хорошо, особенно если вам нужно вводить длинные имена переменных/функций. :)

Кроме того, SLIME связывает C-c C-d f с slime-describe-function-at-point и C-c C-d d с slime-describe-symbol-at-point и C-c C-v d с slime-describe-presentation-at-point.

Кроме того... кое-что, что стало для меня открытием через некоторое время... если вы нажмете RET, находясь в буфере, содержащем трассировку стека ошибок, укажите на запись стека, он отобразит значение локальных переменных внутри работать на этом уровне стека. Если вы затем нажмете RET, когда точка находится на любой из этих переменных, откроется буфер, описывающий эту переменную.

person Community    schedule 25.06.2012
comment
И строка кода, в которой находится каждая запись стека, также находится в этом буфере. Я обнаружил, что это, в сочетании с git grep, позволяет мне довольно хорошо перемещаться по коду src дистрибутива lisp. - person Clayton Stanley; 27.06.2012

Загляните в manifest для получения документации по пакетам. Имейте в виду, что Common Lisp предназначен для использования в качестве динамической системы и включает необязательные слоты строк документации в каждый имеющийся у него примитив объявления. Насколько мне известно, стандартный способ получить документацию о данной функции — просто запустить (describe #'function-name-here) в ответе (без #, если вы ищете документацию о символе).

Это даст вам доступ к строкам документации, а также к спискам аргументов (в случае методов вы получите компиляцию документации по общей функции, а также по каждому конкретному методу).

Посмотрите autocomplete-mode и, возможно, yasnippet для завершения.

person Inaimathi    schedule 25.06.2012