2012-08-08 4 views
6

좋은 탭 완료 란 리플렉션 또는 어딘가에서 사전 정의 된 목록을 필요로하지 않고 동적으로 생성된다는 것을 의미하며 특정 위치에서 수행 할 수있는 작업과 수행 할 수없는 작업을 알고 있습니다. 내가 (println <TAB>)에서, X의 방법의 목록을 얻을 것이다 (.<TAB> x)Clojure REPL에서 _good_ 탭 완성을 가질 수 있습니까?

처럼 나는 예를 들어

내가 어떻게 을 좋아 ... (Math/<TAB>에 내가 수학 함수 목록을 가져, 로컬 및 글로벌 정의의 목록을 탭은 ghci (Haskell) 또는 ipython에서 작동합니다.

답변

0

IClojure처럼 보이는 것이 다소 멋지게 나옵니다. 그것은 영감을 얻었으며 IPython처럼 보이고 탭 완료 (3 가지 경우 중 2 가지가 언급되지 않음)를 제공하고 콘솔에서 Clojure를 개발하는 데 도움을줍니다. 매우 안정적이지는 않지만.

4

확실히 가능하며 도구의 몇 가지가 그 방향으로 진화하고 있습니다. clojure의 최신 버전에는 "개발 모드"옵션이 포함되어있어 이런 종류의 도구를보다 쉽게 ​​만들 수 있습니다.; 예를 들어, 디버깅을 돕기 위해 로컬 지우기를 끄고 IDE와 관련 도구에서 사용하기 위해 컴파일 프로세스에 대한 더 많은 정보를 최종적으로 내보낼 수 있습니다. 이것은 Clojure 생태계를 개선하기위한 영역으로 널리 인식되고 있으며, 내 관측을 통해 몇 명의 현명한 사람들이 작업 중이다.

+0

콘솔 REPL에서이 기능을 사용하려면 기본적으로 더 기다려야합니다. –

7

보다 나은 REPL을 위해 reply을보십시오. 여기서는 Java 인스턴스 메소드 완성을 남겨두고 언급 한 세 가지 유즈 케이스 중 두 가지를 다루고 있습니다.

leiningen v2 +를 사용하는 경우 lein repl 명령으로 호출되는 기본 REPL입니다.

1

Eclipse CounterClockwise REPL의 현재 베타 버전은 코드 완성을 크게 개선했으며 Java 완료를 포함하여 모든 경우에 대해 설명합니다. 물론 독립 실행 형 명령 줄 REPL되지 않습니다. Clojure는 역동적 인 언어이지만 타입에 대한 완성에 한계가 있습니다. Haskell과 같이 강력한 형식의 언어에서는 훨씬 쉽습니다.

+0

".. 코드 처리가 크게 향상되었습니다."-> 그래서 결국 명령 줄에도 있어야합니다. "하스켈과 같이 강하게 타자를 치는 언어에서는 훨씬 쉽습니다." -> 나는 이것 때문에 ipython을 언급했다. –

+0

CCW의 REPL은 NREPL 클라이언트이지만 NREPL은 코드를 실행하고 코드 항목이 아닌 출력을 반환하는 데 사용됩니다. 완료 코드 CCW는 Eclipse 및 다른 CCW 코드와 밀접하게 연결되어 있으므로 곧 다른 NREPL 클라이언트에 통합되는 것을 보지 못합니다. – NielsK

1

나는 Slim과 Emacs auto-complete을 가진 편집기로 이맥스를 사용하고 있으며, 이클립스 내에서 복제를 위해 작동하는 모든 기능을 가지고있다 : 자바 클래스와 필드를위한 자동 완성, Clojure 함수의 자동 완성 + 문서. 안타깝게도 Emacs를 편집기/IDE로 사용하지 않는다면 작동하지 않을 것입니다.

+0

이전에 같은 질문을했습니다 : [Clojure repl에서 자동 확장 또는 자동 완성 기능을 수행하는 방법] (http://stackoverflow.com/questions/4289480/how-to-do-automatic-expansion-oror 함수의 자동 완성 및 변수의 변수) –