Как выполнить автоматическое расширение или автозаполнение функций и переменных в Clojure repl

Есть ли способ расширить текущую команду в Clojure, как я мог бы сделать в Common Lisp?

Например, я набрал:

Math/

Я хотел бы, чтобы ключ табуляции расширялся до всех доступных переменных и функций в этом пространстве имен.

Я использую Clojure, поскольку inferior- lisp хотел бы знать, как это сделать из простой замены ванили в Clojure и через swew slime.

Ответ 1

Еще один голос в пользу clojure -мод и слизь под Emacs. В частности, если вы настроили автозаполнение, вы можете использовать ac-slime, чтобы получить контекстно-зависимую вкладку в раскрывающемся списке. Здесь screencast показывает его в действии.

И в дополнение к комментарию technomancy о hippie-expand, здесь, как связать завершение слизи в hippie-expand.

Обновление: с 2012 года nrepl, nrepl.el и ac-nrepl заменяют слизь и ac-slime; те же функциональные возможности, меньшая и чистая база кода.

Обновление2: по состоянию на октябрь 2013 nrepl.el переименовано в cider, и он и ac-nrepl переместились в clojure-emacs на github. nrepl остается в качестве серверного компонента

Ответ 2

Вы пробовали Clojure режим для Emacs? Он имеет автозаполнение (предложения отображаются в новом окне, и если есть только один возможный вариант, он используется для расширения имени), выделения и многих других полезных функций (не более, чем для CL, но не менее).

Доступно через ELPA. После установить ELPA тип M-x package-list-packages, установите курсор возле нужного пакета и нажмите i (уже установленные пакеты краснеют). Вам понадобятся пакеты clojure-mode, slime, slime-repl и swank-clojure. Когда вы закончите с i -марками, нажмите x, чтобы завершить установку. Наконец, нажмите M-x slime - Emacs сообщит, что Clojure не установлен и предлагается загрузить и использовать последнюю версию. Просто согласитесь.

Вы также можете интегрировать Emacs с Leiningen.

Ответ 3

Ванильный repl в Clojure довольно искалечен; у него даже нет истории. Избегайте его ни для чего, кроме самых примитивных задач. Я не думаю, что вы можете получить это в нижнем lisp, но в slime repl вы можете просто использовать TAB для завершения таких вещей. В буферах clojure -mode со слизью активируется M-TAB или вы можете привязать его к функциям расширения hippie.