有没有clojure IDE 可以帮助autocomplete Java 对象的方法?

Is there a clojure IDE can help autocomplete Java object method?

是否有 clojure IDE 可以帮助自动完成 Java 对象方法?

例如:

(def my-temp-file (java.io.File/createTempFile "filename" ".txt"))

那我要输入:

(.deleteOnExit my-temp-file)

我怎么能:

(.我的临时文件删除|"cursor here");;我怎样才能获得自动完成 del* 方法

(.delet|"cursor here" 我的临时文件) ;;我怎样才能获得自动完成 del* 方法

...

刚才试了一下intellij14.1.4 + cursive0.1.60,很不错

我尝试自动完成从 "delete" 到“deleteOnExist”

情况一,这样就可以了:

情况 2,这行不通:

如何在情况 2 中获得 "deleteOnExist" 自动完成功能?请帮助

Cursive Clojure,一个 IntelliJ 插件具有出色的 Java 互操作性,可以为您完成此操作。

既然你放了标签 emacs,你可以试试 ciderac-cider。但是,我发现这个组合在自动完成精度方面有点容易出错。建议的选项可以是来自其他 类.

的方法

您的示例的问题在于 def 不会根据其初始化程序的类型自动添加 :tag 元数据。你可以这样看:

Connecting to local IDE...
Clojure 1.7.0
(import java.io.File)
=> java.io.File
(def temp-file (File/createTempFile "filename" ".txt"))
=> #'user/temp-file
temp-file
=> #object[java.io.File 0x6c8b97fd "/var/folders/x1/9k18lcbn4qnfs4pptm0dm8fm0000gn/T/filename8344242261832815384.txt"]
(meta #'temp-file)
=> {:line 1, :column 1, :file "NO_SOURCE_PATH", :name temp-file, :ns #object[clojure.lang.Namespace 0x548b68c5 "user"]}

因此您的示例将适用于以下情况:

(let [temp-file (File/createTempFile "filename" ".txt")]
  (temp-file .dele|))

其中 | 代表插入符号。如果您手动将标签添加到您的 def,它也会起作用,例如:

(def ^File temp-file (File/createTempFile "filename" ".txt"))