Cider: *print-namespace-maps*๋Š” ํ•ญ์ƒ true์ž…๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 05์›” 02์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: clojure-emacs/cider

์˜ˆ์ƒ ๋™์ž‘, ์‹ค์ œ ๋™์ž‘ ๋ฐ ๋ฌธ์ œ ์žฌํ˜„ ๋‹จ๊ณ„

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ‚ค๋กœ ๋งต ํ‰๊ฐ€
{:person/name "Fred" :person/age 50}
์‚ฌ์ด๋‹ค repl์—์„œ ๋‹ค์Œ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.
#:person{:name "Fred", :age 50}
์ด๋Š” *print-namespace-maps* ๊ฐ€ true ๊ธฐ๋ณธ ์„ค์ •๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด set! ๋กœ ์ด var์˜ ๊ฐ’์„ ์˜๊ตฌ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

user> (set! *print-namespace-maps* false)
false
user> *print-namespace-maps*
false

๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ๋™์ž‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

user> (set! *print-namespace-maps* false)
false
user> *print-namespace-maps*
true

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ binding var๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

user> (binding [*print-namespace-maps* false]
        [*print-namespace-maps* {:person/name "Fred" :person/age 50}])
[false {:person/name "Fred" :person/age 50}]

๊ทธ๋Ÿฌ๋‚˜ var๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์›ํ•˜๋Š” ๋™์ž‘์€ ๊ณ„์† ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

user> (binding [*print-namespace-maps* false]
        [*print-namespace-maps* {:person/name "Fred" :person/age 50}])
[false #:person{:name "Fred", :age 50}]

CIDER ๋ฒ„์ „ ์ •๋ณด

;; CIDER 0.15.0 (London), nREPL 0.2.13
;; Clojure 1.9.0, Java 1.8.0_92

์ด๋งฅ์Šค ๋ฒ„์ „

2016-06-01์˜ GNU Emacs 24.5.1(x86_64-apple-darwin15.3.0, NS apple-appkit-1404.34)

์šด์˜ ์ฒด์ œ

OSX ์—˜ ์บํ”ผํƒ„, ๋ฒ„์ „ 10.11.6

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์ด CIDER ๊ณ ์œ ์˜ ๋ฌธ์ œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ Leiningen REPL์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  8 ๋Œ“๊ธ€

์ด๊ฒƒ์ด CIDER ๊ณ ์œ ์˜ ๋ฌธ์ œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ Leiningen REPL์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” nREPL ๋˜๋Š” REPLY์˜ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ์ด ์žˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

https://github.com/cemerick/nREPL/blob/master/src/main/clojure/clojure/tools/nrepl/middleware/interruptible_eval.clj - (get-thread-bindings) ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด eval ๊ตฌํ˜„์ด ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค *print-namespace-maps* ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์บก์ฒ˜ ๋ฐ ๋ณต์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

https://github.com/cemerick/nREPL/blob/master/src/main/clojure/clojure/tools/nrepl/middleware/session.clj#L108 - ์ด๊ฒƒ์€ ์•ฝ๊ฐ„์˜ ์šฉ์˜์ž์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. *print-namespace-maps* ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

clojure.main/with-bindings ๋Š” *print-namespace-maps* ๊ธฐ๋ณธ ๋ฐ”์ธ๋”ฉ true ํ‘ธ์‹œ๋ฅผ ํฌํ•จํ•˜์—ฌ clojure.main/repl ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ๋ฃจํŠธ ๋ฐ”์ธ๋”ฉ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ ๋ฃจํŠธ ์ •์˜ *print-namespace-maps* ์—์„œ clojure/core_print.clj ์ด๋‹ค false . ์ด ๋™์ž‘์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค clj -e "(get-thread-bindings)" ์ด๋ณด๊ณ  ๋œ {#'clojure.core/*print-namespace-maps* true ...} .

์ด๋Š” nREPL ๋˜๋Š” REPLY์˜ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ์ด ์žˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

REPLy๊ฐ€ nREPL ์œ„์— ํŠน๋ณ„ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ nREPL ๋ฌธ์ œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

clojure.main์€ print-namespace-maps๋ฅผ ๋ฐ”์ธ๋”ฉํ•œ ๋‹ค์Œ repl์˜ ํ‰๊ฐ€ ์ „๋ฐ˜์— ๊ฑธ์ณ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. nrepl์—์„œ ์ด์— ์ƒ์‘ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ด€๋ จ ํ•„๊ธฐ์ฒด ๋ฌธ์ œ์ธ cursive-ide/cursive#1541์—์„œ ์–ผ๋งˆ ์ „์— ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/clojure/tools.nrepl ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ณ  @bbatsov ์—์„œ ์—ฌ๊ธฐ์„œ

@Reefersleep ๊ฑฐ์˜.

https://github.com/clojure/tools.nrepl ์€ . ๊ฑฐ๊ธฐ์— ํ‹ฐ์ผ“์„ ์ œ์ถœํ•ด ์ฃผ์„ธ์š”.

@bbatsov ์—ฌ๊ธฐ์— ์˜ค๋ฅ˜ ๊ฑฐ์ง“๋ง์„ ๋ฏฟ๊ณ ๋กœ nrepl์˜ repo์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๊ฒŒ์‹œ : https://github.com/nrepl/nREPL/issues/33

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰