環境とバージョン情報
CIDERバージョン情報
;; nREPLサーバーに接続しました-nrepl:// localhost :59990
;; CIDER 0.17.0snapshot(パッケージ:20180413.51)、nREPL 0.2.13
;; Clojure 1.8.0、Java 9.0.4
Lein / Bootバージョン
BOOT_CLOJURE_NAME = org.clojure / clojure
BOOT_CLOJURE_VERSION = 1.8.0
BOOT_VERSION = 2.7.2
Emacsバージョン
27.0.50
オペレーティング・システム
マックOS
ご覧のとおり、シンボルはlang.Stringではなくjava.lang.Character / toUpperCaseに対して誤って解決されています。
どのバージョンを選択するかを尋ねるプロンプトが表示されませんか?
@bbatsov不思議なことに、今日は次のようになっています(これははるかに優れています😂):
チェックしたところ、デフォルトのホットキー(Spacemacsではevil-normal-stateでは, h h
)を使用するとプロンプトが表示されますが、このホットキーを使用すると自分で構成したのではありません。
(key-chord-define-global "fd" '(lambda () (interactive "")
(cond
((or (eq evil-state 'normal) (eq evil-state 'visual)) (execute-kbd-macro (kbd "<escape> , h h")))
((eq evil-state 'insert) (execute-kbd-macro(kbd "<escape> l , h h i"))))))
このホットキーはどういうわけかプロンプトをスキップし、文字のドキュメントを表示するだけです。
ところで、eldocのヒントでは、さまざまなメソッドの引数を分離するなど、いくつかの作業を使用することもできます。
適切な分離を理解できなかったため、考えられるすべてのバージョンの署名を混合しただけです。 理想的ですが、残念ながらこれをどのように改善できるかわかりません。 Eldocはver文字列構造である必要があります。そうでない場合、そこでのパラメーターの強調表示が壊れます。
@bbatsov Emacsを再起動したところ、Javadocが再び失われました。 :(
9ではなくJava8を試してみると、状況が変わるのではないかと思います。Java9で遊ぶ時間があまりなかったので、そこで行っているクラスパス操作の一部が正しく機能していないのではないかと思います。 また、eldoc / cider-docを試す前に、コードバッファが評価されていることを確認してください。
@bbatsov Java 8に切り替えましたが、まだ問題はありません(ただし、それ以来、コーディングはあまり行っていません)。
そして、私はあなたがその話をしている人だと理解しました^ __ ^どういうわけかあなたのアバターは私にとても攻撃的に見え、この種は私を驚かせました:))あなたの仕事に感謝します;)私はあなたのClojureBadPartsの話を今見ています😊
ハハ!
そして、これが私の幸せそうな顔だと思いました! 😄
こんにちは、(emacs / cider初心者はこちら)
一般的なサイダー/ロードマップのどこにこのバグがありますか?
もっとですか
clj / emacsの学習に時間を費やすたびに、クラスを検索してイライラしたいと思うようになります。これは完全に私にかかっていますが、私は自分自身に問い続けています。
私のセットアップが間違っているか壊れているか、または「本物の」clojure開発者がjavadocを検索する必要がないかどうか-これは私にとって非常に困惑するでしょう。
私のテストケースはcider-doc
java.util.concurrent.PriorityBlockingQueue
を介して検索することで、結果はhttps://imgur.com/a/TaQXfpSになります。
要するに:これは私にとって、またはすべての人にとって壊れているだけですか、そして人々はそれなしでどのように対処しますか?
PPS:java-docとjava-srcをインストールしてjava8-11で試しました
出力:
クラスで
java.util.concurrent.PriorityBlockingQueue
Extends: java.util.AbstractQueue
Implements: java.util.concurrent.BlockingQueue
java.io.Serializable
Not documented.
For additional documentation, see the Javadoc.
Definition location unavailable.
メソッドについて
java.util.concurrent.PriorityBlockingQueue/add
[this java.lang.Object]
Not documented.
For additional documentation, see the Javadoc.
Definition location unavailable.
進捗 !
私は次のことが起こっていると思います
前提:MELPAのサイダーを使用するspacemacsを使用しています。現在は0.20.0 + cider-nrepl 0.20.0
cider-nrepl0.20.0は果樹園0.3.1を使用します
問題:
orchardは、 jdk-sources
-> jdk-resource-url
、そして批判的に-> jdk-root
を使用してJavaソースを検出します。
(def jdk-root
"The JDK root directory (parent of the `java.home` JRE directory)"
(-> (io/file (System/getProperty "java.home"))
(.getParentFile)))
(https://github.com/clojure-emacs/orchard/blob/v0.3.1/src/orchard/java.clj#L47)
私のシステム(archlinux)とubuntus openjdk-11-jre-headless_11.0.1+13-2ubuntu1_amd64
パッケージでは、javasは/usr/lib/jvm
下のフォルダーとしてレイアウトされているようです。
NS
# ~/Downloads/openjdk-11-jre-headless_11.0.1+13-2ubuntu1_amd64/data $ tree usr/lib/jvm/ -L 2
usr/lib/jvm/
├── java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64
└── java-11-openjdk-amd64
またはarchlinux
# ~ $ tree /usr/lib/jvm/ -L 2
/usr/lib/jvm/
├── default -> java-11-openjdk
├── default-runtime -> java-11-openjdk
├── java-11-openjdk
├── java-8-openjdk
└── java-default-runtime -> default
デモでは、emacs / cider repl java.home
は次のようになります。
(System/getProperty "java.home")
; => /usr/lib/jvm/java-11-openjdk
_外部からの何かがこれを渡すかどうか、または現在のJavaのデフォルトのホームかどうかはわかりません。_
私が間違っていなければ、それは私のシステムではjdk-rootが
(-> (io/file (System/getProperty "java.home"))
(.getParentFile)))
; => /usr/lib/jvm/
その結果、 jdk-resource-url
が間違った(親)フォルダーで検索します
結論:
jdk-roots
"JDKルートディレクトリ( java.home
JREディレクトリの親)"コメント/前提が間違っているようです(オンラインですばやく確認したところ、Javaとしての「標準」がないようです。家は本当にあることを意味します)
それは誰かを助けますか?
はい、役に立ちます! Java 8を介して、 java.home
システムプロパティはJDKルート内のJREを指します。 これは、 https://docs.oracle.com/javase/7/docs/technotes/tools/linux/jdkfiles.htmlで予想されてい
user=> (System/getProperty "java.home")
"/usr/lib/jvm/java-8-openjdk-amd64/jre"
java 9以降、JREサブディレクトリはなくなり、その内容は1レベル上でJDKルートにマージされます。これはjava.home
指すようになりました。
user=> (System/getProperty "java.home")
"/usr/lib/jvm/java-11-openjdk-amd64"
(https://docs.oracle.com/en/java/javase/11/install/installed-directory-structure-jdk.htmlを参照)
Debianから派生したディストリビューションのユーザーのために、 openjdk-11-source
パッケージはsrc.zip
への壊れたシンボリックリンクをインストールします(https://bugs.launchpad.net/ubuntu/+source/openjdk-ltsを参照) / + bug / 1791219)
それをインストールした後、私は持っています:
$ pwd
/usr/lib/jvm
$ ls -l java-11-openjdk-amd64/src.zip
lrwxrwxrwx 1 root root 21 Nov 20 04:13 java-11-openjdk-amd64/src.zip -> ../openjdk-11/src.zip
$ find openjdk-11 -type f
openjdk-11/lib/src.zip
果樹園は両方の場所をチェックして、 src.zip
が読み取り可能かどうかをテストする必要があるようです。 そうでない場合は、STDERRにスケルチ可能な警告を出力することもできます。
これが合理的であると思われる場合は、PRを提出させていただきます。
それまでの間、 src.zip
コピーを見つけて、手動でクラスパスに追加できます。たとえば、 :local/root
deps.ednエントリを使用します(tools.deps https:/を使用している場合)。 /clojure.org/reference/deps_and_cli#_dependencies)。
うーん、コールチェーンjdk-sources -> jdk-root
は、 boot-class-loaderにあるときにのみ呼び出されるようです。それ以外の場合は、 (.getContextClassLoader (Thread/currentThread))
。
project.cljを使用してクラスパスにzipを強制しました
:profiles {:repl {:resource-paths ["/usr/lib/jvm/default/lib/src.zip"]}}
経由でチェック
> (System/getProperty "java.class.path") ; in repl buffer
; "/home/_/Projekte/repos/temp/test/test:/_/patrik/Projekte/repos/temp/test/src:
/usr/lib/jvm/default/lib/src.zip: <snip>
まだドキュメントはありません
https://github.com/clojure-emacs/orchard/issues/20が修正されるまで、
ただし、Java8は機能するはずです。 自動的に追加されるクラスパスにsrc.zip
とtools.jar
両方が必要になります。 次に、次のようなものを試すことができます(cider v0.21.1):
(clojure.java.io/resource "java/util/AbstractQueue.java")
;; => #object[java.net.URL 0x2e00bc76 "jar:file:/usr/lib/jvm/java-8-openjdk-amd64/src.zip!/java/util/AbstractQueue.java"]
(require '[mranderson049.orchard.v0v4v0.orchard.java.parser :as ojp])
(keys (ojp/source-info 'java.util.AbstractQueue))
;; => (:class :doc :line :column :members :file :path)
この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 ご理解とご協力をよろしくお願いいたします。
@jeffvalkは最近、リンクされたオーチャードの問題に対処したので、これを閉じることができると思います。
Debian 10では、 openjdk-11-source
インストールするだけで済みました。 src.zip
をシンボリックリンクしようとすると、すでに作成されていることがわかりました。
Ubuntu18.04とEmacs26.3 CIDER 0.24.0 nREPL 0.6.0 Java 1.8.0_242で、リソースとしてJavaソースを含むzipを含むdirをLeiningenプロファイル( ~/.lein/profiles.clj
)に追加しました。
{:user {:resource-paths ["/usr/lib/jvm/openjdk-8"]}}