2

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

例如:

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

然后我想输入:

(.deleteOnExit my-temp-file)

我怎样才能 :

(.my-temp-file delete|"光标在这里") ;; 我怎样才能获得自动编译 del* 方法

或者

(.delet|"光标在这里" my-temp-file) ;; 我怎样才能获得自动编译 del* 方法

...

刚才试了intellij14.1.4 + cursive0.1.60,非常棒。

我试图从“delete”自动编译到“deleteOnExist”

情况1,没关系: 情况1,没关系:

情况2,这不起作用: 情况2,这不起作用:

如何在情况 2 中获得“deleteOnExist”自动完成功能?请帮忙

4

3 回答 3

7

Cursive Clojure是一个 IntelliJ 插件,具有出色的 Java 互操作性,可以为您做到这一点。

于 2015-09-06T01:20:05.777 回答
3

您的示例的问题在于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|))

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

(def ^File temp-file (File/createTempFile "filename" ".txt"))
于 2015-09-07T18:38:41.590 回答
1

由于您放置了标签 emacs,您可以尝试cider使用ac-cider. 但是,我发现这个组合在自动完成精度方面有点容易出错。建议的选项可以是其他类的方法。

于 2015-09-06T08:25:53.337 回答