Cider: рд╕реАрдЖрдИрдбреАрдИрдЖрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: clojure-emacs/cider

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

image

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

image

рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА
рд╕реАрдЖрдИрдбреАрдИрдЖрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА
;; nREPL рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб - nrepl://localhost :59990
;; рд╕реАрдЖрдИрдбреАрдИрдЖрд░ 0.17.0 рд╕реНрдиреИрдкрд╢реЙрдЯ (рдкреИрдХреЗрдЬ: 20180413.51), рдПрдирдЖрд░рдИрдкреАрдПрд▓ 0.2.13
;; рдХреНрд▓реЛрдЬрд░ 1.8.0, рдЬрд╛рд╡рд╛ 9.0.4
рд▓реАрди/рдмреВрдЯ рд╕рдВрд╕реНрдХрд░рдг
BOOT_CLOJURE_NAME=org.clojure/clojure
BOOT_CLOJURE_VERSION=1.8.0
BOOT_VERSION=2.7.2

Emacs рд╕рдВрд╕реНрдХрд░рдг
реирен.реж.релреж

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо
рдореИрдХ рдУрдПрд╕

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдкреНрд░рддреАрдХ рдХреЛ рдЧрд▓рддреА рд╕реЗ java.lang.Character/toUpperCase рдХреЗ рдмрдЬрд╛рдп lang.String рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╣ рдкреВрдЫрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪреБрдирдирд╛ рд╣реИ?

@bbatsov рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдЖрдЬ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реИ (рдЬреЛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ ):
image

рдореИрдВрдиреЗ рдЬрд╛рдВрдЪ рдХреА, рдФрд░ рдЬрдм рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЙрдЯрдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ (рд╕реНрдкреЗрд╕рдореИрдХреНрд╕ рдореЗрдВ рдпрд╣ , 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"))))))

рдпрд╣ рд╣реЙрдЯрдХреА рдХрд┐рд╕реА рддрд░рд╣ рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЪрд░рд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рджрд┐рдЦрд╛рддреА рд╣реИред

рдмреАрдЯреАрдбрдмреНрд▓реВ, рдПрд▓реНрдбреЛрдХ рдХрд╛ рд╕рдВрдХреЗрдд рдХреБрдЫ рдХрд╛рдо рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрд▓рдЧрд╛рд╡:
image

рд╣рдо рдПрдХ рдЕрдЪреНрдЫреЗ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ред рдпрд╣ рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрд▓реНрдбреЛрдХ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╡рд╣рд╛рдВ рдкрд░ рдкреИрд░рд╛ рдХреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЯреВрдЯ рдЬрд╛рдПрдЧреАред

@bbatsov рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдиреЗ Emacs рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛, рдФрд░ Javadocs рдлрд┐рд░ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред :(
image

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк 9 рдХреЗ рдмрдЬрд╛рдп рдЬрд╛рд╡рд╛ 8 рдХреЛ рдЖрдЬрдорд╛рддреЗ рд╣реИрдВ рддреЛ рдЪреАрдЬреЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЬрд╛рддреА рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ 9 рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреБрдЫ рдХреНрд▓рд╛рд╕рдкрд╛рде рдореИрдирд┐рдкреБрд▓реЗрд╢рди рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХреБрдЫред рд╕рд╛рде рд╣реА - рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдПрд▓реНрдбреЛрдХ/рд╕рд╛рдЗрдбрд░-рдбреЙрдХ рдХреЛ рдЖрдЬрдорд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдмрдлрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

@bbatsov рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ 8 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдФрд░ рдЕрднреА рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдмрд╣реБрдд рдХреЛрдбрд┐рдВрдЧ рдирд╣реАрдВ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ)ред
рдФрд░ рдореИрдВ рдЕрднреА рд╕рдордЭ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЖрдк рд╡рд╣ рд╡реНрдпрдХреНрддрд┐ рд╣реИрдВ рдЬреЛ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ ^__^ рдХрд┐рд╕реА рддрд░рд╣ рдЖрдкрдХрд╛ рдЕрд╡рддрд╛рд░ рдореБрдЭреЗ рдЗрддрдирд╛ рдЖрдХреНрд░рд╛рдордХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ :)) рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж;) рдореИрдВ рдЕрдм рдЖрдкрдХрд╛ рдХреНрд▓реЛрдЬрд░ рдмреИрдб рдкрд╛рд░реНрдЯреНрд╕ рдЯреЙрдХ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ

рд╣рд╛рд╣рд╛!

рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдореЗрд░рд╛ рдЦреБрд╢ рдЪреЗрд╣рд░рд╛ рд╣реИ! рдореИрдВ

рдирдорд╕реНрддреЗ, (рдпрд╣рд╛рдВ emacs/рд╕рд╛рдЗрдбрд░ рд╢реБрд░реБрдЖрддреА)

рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдЗрдбрд░/рд░реЛрдбрдореИрдк рдореЗрдВ рдпрд╣ рдмрдЧ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ

  • рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕рдордп рдирд╣реАрдВ рд╣реИ
  • рдЗрд╕реЗ рдмрд╛рдЧ рдХреЗ рд╕рд╛рде/рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  • рдпрд╣ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
  • рдЗрд╕реЗ рдЕрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ clj/emacs рд╕реАрдЦрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХреБрдЫ рдХрдХреНрд╖рд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдирд┐рд░рд╛рд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВ - рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореБрдЭ рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЦреБрдж рд╕реЗ рдкреВрдЫрддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ:

рдХреНрдпрд╛ рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк рдЧрд▓рдд рд╣реИ рдпрд╛ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, рдпрд╛ "рдЕрд╕рд▓реА" рдХреНрд▓реЛрдЬрд░ рджреЗрд╡реЛрдВ рдХреЛ рдХрднреА рднреА рдЬрд╛рд╡рд╛рдбреЛрдХ рджреЗрдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ - рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рдЯреЗрд╕реНрдЯрдХреЗрд╕ cider-doc java.util.concurrent.PriorityBlockingQueue рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк https://imgur.com/a/TaQXfpS рд╣реЛрддрд╛ рд╣реИ ред


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рдпрд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рд▓реЛрдЧ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ?

рдкреАрдкреАрдПрд╕: рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ 8 - 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.

рдкреНрд░рдЧрддрд┐ !

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ


рдкрд░рд┐рд╕рд░: рдореИрдВ рд╕реНрдкреЗрд╕рдореИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдПрдордИрдПрд▓рдкреАрдП рдХреЗ рд╕рд╛рдЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ 0.20.0 + рд╕рд╛рдЗрдбрд░-рдПрдирдЖрд░рдИрдкреАрдПрд▓ 0.20.0

рд╕рд╛рдЗрдбрд░-рдПрдирдЖрд░рдИрдкреАрдПрд▓ 0.20.0 рдмрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ 0.3.1


рдореБрджреНрджрд╛:

рдСрд░реНрдЪрд░реНрдб jdk-sources -> jdk-resource-url рдФрд░ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ -> jdk-root рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рд╡рд╛ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ

(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 рдкреИрдХреЗрдЬ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ /usr/lib/jvm рддрд╣рдд рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рд╣реИрдВ

рдЕрд░реНрдерд╛рдд

# ~/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

рдпрд╛ рдЖрд░реНрдХрд▓рд┐рдирдХреНрд╕

# ~ $ 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/рд╕рд╛рдЗрдбрд░ рдЙрддреНрддрд░ java.home рдпрд╛рдиреА:

(System/getProperty "java.home") 
; =>  /usr/lib/jvm/java-11-openjdk

_рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмрд╛рд╣рд░ рд╕реЗ рдХреЛрдИ рдЪреАрдЬрд╝ рдЗрд╕рдореЗрдВ рд╕реЗ рдЧреБрдЬрд╝рд░рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╛ рдЕрдЧрд░ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдЬрд╛рд╡рд╛ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдШрд░ рд╣реИред_

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реЛрдЧрд╛ jdk-root is

(-> (io/file (System/getProperty "java.home"))
      (.getParentFile))) 
; => /usr/lib/jvm/

рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк jdk-resource-url рдЪреАрдЬреЛрдВ рдХреЛ рдЧрд▓рдд (рдкреИрд░реЗрдВрдЯ) рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ


рдирд┐рд╖реНрдХрд░реНрд╖:

jdk-roots "рдЬреЗрдбреАрдХреЗ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ( java.home рдЬреЗрдЖрд░рдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЕрднрд┐рднрд╛рд╡рдХ)" рдЯрд┐рдкреНрдкрдгреА/рдЖрдзрд╛рд░ рдЧрд▓рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдСрдирд▓рд╛рдЗрди рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ java. рдШрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ)

рдХреНрдпрд╛ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ?

рд╣рд╛рдБ, рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ! рдЬрд╛рд╡рд╛ 8 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, java.home рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдкрд░реНрдЯреА рдЬреЗрдбреАрдХреЗ рд░реВрдЯ рдХреЗ рднреАрддрд░ рдПрдХ рдЬреЗрдЖрд░рдИ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ рдкреНрд░рддрд┐ 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"

рдЬрд╛рд╡рд╛ 9 рд╕реЗ рдЖрдЧреЗ, JRE рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЪрд▓реА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ 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)

рдбреЗрдмрд┐рдпрди-рд╡реНрдпреБрддреНрдкрдиреНрди рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рдл, openjdk-11-source рдкреИрдХреЗрдЬ src.zip рд▓рд┐рдП рдПрдХ рдЯреВрдЯреА рд╣реБрдИ рд╕рд┐рдорд▓рд┐рдВрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://bugs.launchpad.net/ubuntu/+source/openjdk-lts /+рдмрдЧ/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 рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдирд╣реАрдВ рддреЛ рдПрд╕рдЯреАрдбреАрдИрдЖрд░рдЖрд░ рдХреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЪреЗрддрд╛рд╡рдиреА рдореБрджреНрд░рд┐рдд рдХрд░рдирд╛ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдЕрдЧрд░ рдпрд╣ рдЙрдЪрд┐рдд рд▓рдЧреЗ рддреЛ рдореБрдЭреЗ рдПрдХ рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдЗрд╕ рдмреАрдЪ, рдЖрдк src.zip рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рд╕рдкрд╛рде рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП :local/root deps.edn рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдпрджрд┐ рдЖрдк tools.deps https:/ /clojure.org/reference/deps_and_cli#_рдирд┐рд░реНрднрд░рддрд╛)ред

рдПрдЪрдПрдо, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ jdk-sources -> jdk-root рдХреЗрд╡рд▓ рддрднреА рдХреЙрд▓ рдХреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдмреВрдЯ-рдХреНрд▓рд╛рд╕-рд▓реЛрдбрд░ рдореЗрдВ рдЕрдиреНрдпрдерд╛ рдпрд╣ (.getContextClassLoader (Thread/currentThread)) ,

рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рд╕рдкрд╛рде рдкрд░ рдЬрд╝рд┐рдк рдХреЛ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред clj

: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>

рдЕрднреА рднреА рдХреЛрдИ рдбреЙрдХреНрдЯрд░ рдирд╣реАрдВ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ 11 рдкрд░ рддрдм рддрдХ рдЯреВрдЯреЗрдЧрд╛ рдЬрдм рддрдХ https://github.com/clojure-emacs/orchard/issues/20 рдареАрдХ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред
рдЬрд╛рд╡рд╛ 8 рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдХреНрд▓рд╛рд╕рдкрд╛рде рдкрд░ src.zip рдФрд░ tools.jar рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрдм рдЖрдк рдирд┐рдореНрди рдХреА рддрд░рд╣ рдХреБрдЫ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд╛рдЗрдбрд░ 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 рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреБрдбрд╝реЗ рдСрд░реНрдЪрд░реНрдб рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдбреЗрдмрд┐рдпрди 10 рдкрд░, рдореБрдЭреЗ рдХреЗрд╡рд▓ openjdk-11-source рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдерд╛ред рдореИрдВ src.zip рдХреЛ рд╕рд┐рдорд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдЧрдпрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред

Emacs 26.3 CIDER 0.24.0 nREPL 0.6.0 Java 1.8.0_242 рдХреЗ рд╕рд╛рде Ubuntu 18.04 рдкрд░ рдореИрдВрдиреЗ Leiningen рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ ( ~/.lein/profiles.clj ) рдХреЗ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЬрд╝рд┐рдк рдпреБрдХреНрдд рдПрдХ dir рдЬреЛрдбрд╝рд╛:

{:user {:resource-paths ["/usr/lib/jvm/openjdk-8"]}}
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
1 / 5 - 1 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

lilactown picture lilactown  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

carbohydratesn picture carbohydratesn  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oskarkv picture oskarkv  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

harold picture harold  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

manuel-uberti picture manuel-uberti  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ