2010-02-23 27 views

Trả lời

2

Sử dụng cờ -f để rlwrap để bật hoàn thành tab. Nó sẽ được hoàn thành tĩnh mặc dù, dựa trên một danh sách các biểu tượng tĩnh trong một số tập tin bạn chỉ định. Nếu bạn muốn hoàn thành động (dựa trên bất kỳ biểu tượng nào hiện đang được xác định trong REPL đang chạy của bạn), bạn nên thử Emacs + SLIME hoặc tương đương.

Trong mọi trường hợp, đây là một cách để tạo danh sách các biểu tượng để hoàn thành tab. Bạn sẽ phải tạo lại tệp này theo thời gian vì các biểu tượng mới được thêm vào lõi của Clojure trong mọi phiên bản. (Mã này làm việc với chảy máu cạnh clojure-contrib; clojure.contrib.io được gọi duck-streams trong các phiên bản trước đó.)

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

Sau đó:

$ 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 

Nếu thiết bị đầu cuối của bạn được mangling ký tự có dấu, bạn có thể có một mã hóa hoặc vấn đề địa phương. Việc này ổn với tôi. Tôi không sử dụng OS X và không biết bạn sử dụng thiết bị đầu cuối nào, vì vậy tôi không thể trợ giúp. Trong Konsole trong Linux, bên trong rlwrap:

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

ClojureX cố gắng trở thành những gì bạn muốn cho người dùng OS X. Tôi đã không có kinh nghiệm với nó bản thân mình (tôi là một người dùng Linux), nhưng tôi theo ấn tượng rằng các ClojureX folks sẽ sẵn sàng giúp đỡ bạn nếu bạn chạy vào các vấn đề lạ (nhân vật mangling? Tôi không nhận được rằng, có hoặc không có rlwrap ...).

Cập nhật: Dưới đây là một liên kết đến an announcement on the Clojure group lại: một số thay đổi gần đây trong ClojureX ...

Có một lựa chọn thứ hai cho các chức năng readline giống như trong giao diện điều khiển ứng dụng JVM-based - jline. Sử dụng một cái gì đó như

java -cp $CLASSPATH jline.ConsoleRunner clojure.main 

(với jline.jar bao gồm trong $CLASSPATH, tất nhiên) nếu bạn muốn dùng thử.

Ngoài ra, tôi không nghĩ rằng tôi đã từng nghe về hoàn thành tab trong REPJs Clojure độc ​​lập. Hầu hết mọi người sử dụng Emacs/Aquamacs + SLIME, Vimclojure hoặc một số Java IDE với một plugin Clojure cho những thứ như thế. Vâng, một số người khác đã nghe về nó không sao (xem câu trả lời của Brian). Và tôi đã tìm thấy this description về cách thiết lập hoàn thành tab bằng jline. Tôi đã kiểm tra các nguồn cho ClojureX - nó đã thiết lập hoàn thành tab cho bạn. Điều đó làm cho phần này của câu trả lời ban đầu của tôi hơi sai lầm, tôi đoán ... Nhưng thực tế vẫn là ClojureX là một cược rất an toàn, có thể giúp bạn tránh được rắc rối khi tự cấu hình mọi thứ.

Các vấn đề liên quan