Как выполнить автоматическое расширение или автозаполнение функций и переменных в 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.