2010-02-23 3 views

답변

2

탭 완성을 사용하려면 rlwrap에 -f 플래그를 사용하십시오. 그것은 당신이 지정한 파일의 정적 인 심볼 목록을 기반으로 정적 인 작업이 될 것입니다. 실행중인 REPL에서 현재 정의 된 심볼을 기반으로하는 동적 완료를 원할 경우 Emacs + SLIME 또는 이와 동등한 버전을 사용해보십시오.

어떤 경우이든 탭 완성 기호 목록을 생성하는 방법 중 하나입니다. 모든 버전에서 Clojure의 핵심에 새로운 기호가 추가되므로이 파일을 수시로 재생성해야합니다. (이 코드는 출혈 가장자리 Clojure의-있는 contrib와 함께 작동합니다 clojure.contrib.io는 이전 버전의 duck-streams을 불렀다.) 그런 다음

user> (use 'clojure.contrib.io) 
nil 
user> (with-out-writer "/home/user/.clj-tabcompletion" 
     (doseq [[sym _] (ns-publics 'clojure.core)] 
      (println sym))) 
nil 

:

$ rlwrap -f ~/.clj-tabcompletion java -jar clojure.jar 
Clojure 1.2.0-master-SNAPSHOT 
user=> def<TAB> 
definline defmacro  defmethod defmulti  defn   defonce  defprotocol defstruct deftype 
user=> def 

터미널이 액센트 문자를 엉망으로하는 경우, 당신은 가능성이 인코딩이 또는 지역 문제. 그것은 나를 위해 잘 작동합니다. 나는 OS X을 사용하지 않으며 당신이 사용하는 터미널을 모른다. 그래서 나는 도울 수 없다. Linux의 Konsole에서 rlwrap :

user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ") 
àèìòùáéíóúäëïöüâêîôûãõñ 
nil 
user=> (println "牛が牧場で草を食べている。") 
牛が牧場で草を食べている。 
nil 
3

ClojureX OS X 사용자가 원하는대로하려는 시도. 나는 그 자신에 대한 경험이 없다. (나는 리눅스 사용자이다.) 그러나 나는 ClojureX 사람들이 이상한 문제들에 빠지면 도움을 줄 것이라는 인상을 받고있다. (문자 맹 글링? 그, 또는 rlwrap없이 ...).

업데이트 : ClojureX의 최근의 변화 ...

JVM 기반 콘솔 응용 프로그램에서 작성한 Readline 같은 기능에 대한 두 번째 옵션있다 - jline가 : 여기 an announcement on the Clojure group 재에 대한 링크입니다. 당신이 그것을 시도를 제공하려는 경우 (jline.jar 물론, $CLASSPATH에 포함하여)

java -cp $CLASSPATH jline.ConsoleRunner clojure.main 

같은 것을 사용합니다.

또한 독립형 Clojure REPL에서 탭 완성에 대해 들어 본 적이 없다고 생각합니다. 대부분의 사람들은 Emacs/Aquamacs + SLIME, Vimclojure 또는 Java IDE와 같은 것들을 Clojure 플러그인과 함께 사용합니다. 글쎄, 다른 사람들은 괜찮다고 들었어. (Brian의 대답 참조). 그리고 나는 jline을 사용하여 탭 완성을 설정하는 방법을 발견했다. this description. 그리고 나는 그때부터 ClojureX에 대한 소스를 확인했다. 당신을 위해 탭 완성을 설정했다. 저의 원래 응답 중이 부분이 약간의 실수를 저지른 것 같습니다.하지만 ClojureX는 스스로를 구성하는 데 어려움을 줄 수있는 매우 안전한 내기입니다.