unrepl

discussing specification of an edn-based repl and its implementations.
pesterhazy 2017-11-20T10:27:13.000179Z

@volrath amazing! Offline for a weekend and I miss a nice show!

1🙂
cgrand 2017-11-20T11:46:40.000298Z

Go offline more then 😉

cgrand 2017-11-20T13:23:56.000105Z

So blob customization has landed in unrepl and BYOB in unravel!

cgrand 2017-11-20T13:24:43.000237Z

lein unrepl-make-blob your-blob.clj '{:my.own/action (foo/bar #unrepl/param :baz)}' is going to generate a custom blob with the addistional sessions actions. Plus the namespace foo will be automatically required, you just have to put its implementation on the (sideloader) classpath.

pesterhazy 2017-11-20T13:45:34.000313Z

@cgrand could I use this to bundle compliment?

pesterhazy 2017-11-20T13:49:29.000321Z

A new PR to use compliment-based completion: https://github.com/Unrepl/unravel/pull/36

pesterhazy 2017-11-20T13:49:46.000593Z

This needs to be enabled by passing a feature flag: --flag compliment

pesterhazy 2017-11-20T13:50:12.000023Z

Using feature flag we'll be able to merge into master fearlessly

pesterhazy 2017-11-20T14:14:46.000234Z

try --classpath /Users/pe/.m2/repository/compliment/compliment/0.3.1/compliment-0.3.1.jar --flag compliment
already works if I manually require 'compliment.core

cgrand 2017-11-20T14:15:47.000482Z

with std or custom blob?

pesterhazy 2017-11-20T14:16:46.000610Z

std blob

pesterhazy 2017-11-20T14:16:55.000351Z

it's pretty slow though:

(time (require 'compliment.core))
"Elapsed time: 1276.006835 msecs"

pesterhazy 2017-11-20T14:17:10.000479Z

but pretty cool that it works!

cgrand 2017-11-20T14:22:03.000092Z

if compliment is directly on the target JVM, what’s (time (require 'compliment.core))?

pesterhazy 2017-11-20T14:24:06.000315Z

same!

pesterhazy 2017-11-20T14:24:08.000484Z

java -cp /Users/pe/.m2/repository/compliment/compliment/0.3.1/compliment-0.3.1.jar:/Users/pe/.m2/repository/org/clojure/clojure/1.9.0-alpha14/clojure-1.9.0-alpha14.jar clojure.main
Clojure 1.9.0-alpha14
user=> (time (require 'compliment.core))
"Elapsed time: 1164.47074 msecs"

pesterhazy 2017-11-20T14:24:24.000146Z

that's insane

pesterhazy 2017-11-20T14:26:12.000345Z

java -cp /Users/pe/.m2/repository/medley/medley/1.0.0/medley-1.0.0.jar:/Users/pe/.m2/repository/org/clojure/clojure/1.9.0-alpha14/clojure-1.9.0-alpha14.jar clojure.main
Clojure 1.9.0-alpha14
user=> (time 'medley.core)
"Elapsed time: 0.043526 msecs"

cgrand 2017-11-20T14:29:23.000164Z

patch or ditch?

cgrand 2017-11-20T14:29:53.000393Z

I’m sure you doubted and thought the sideloader was to blame for slowness

pesterhazy 2017-11-20T14:46:33.000336Z

I stand corrected

cgrand 2017-11-20T14:47:15.000654Z

On another topic: guess-readable is a very simple heuristic that checks if delimiters are well balanced and take care of escape sequences.

pesterhazy 2017-11-20T14:47:17.000134Z

Thou shalt not doubt thy sydeloader

pesterhazy 2017-11-20T14:49:49.000519Z

@cgrand as a first heuristic to get quicker feedback if parens are wrong?

pesterhazy 2017-11-20T14:50:48.000022Z

idea: if I type ) in interactive mode, it automatically inserts the right closing paren, }, ], or )

cgrand 2017-11-20T14:52:52.000226Z

yes as a good enough heuristic

cgrand 2017-11-20T14:59:45.000227Z

with a low risk of being broken by a syntax change (considering previous syntax changes)

pesterhazy 2017-11-20T15:00:53.000337Z

makes sense

pesterhazy 2017-11-20T15:01:03.000656Z

although not sure if it makes a difference perf-wise?

cgrand 2017-11-20T15:01:21.000082Z

and not sensible to the #=(java.lang.System/exit 0) attack 😉

pesterhazy 2017-11-20T15:01:32.000252Z

haha

cgrand 2017-11-20T15:01:53.000487Z

(I know there’s a flag for that)

pesterhazy 2017-11-20T15:02:08.000393Z

it's not a bug it's a feature

pesterhazy 2017-11-20T15:02:20.000775Z

you can do things without wearing out your enter key

cgrand 2017-11-20T15:02:36.000713Z

evaluate code without sending it! the repl that reads your mind!

cgrand 2017-11-20T15:44:35.000409Z

Between unravel and unrepl.el we should bang the drum.

cgrand 2017-11-20T15:51:27.000201Z

https://twitter.com/cgrand/status/932637409212272641

1❤️
cgrand 2017-11-20T15:59:40.000820Z

I’ve slowly been realizing that npm readline is not libreadline

2017-11-20T16:16:54.000103Z

FYI that gif doesn’t display properly as it’s behind slack’s auth

cgrand 2017-11-20T16:24:21.000481Z

thanks for porting this to my attention

2017-11-20T16:24:47.000745Z

you’re welcome… thanks for bringing this to mine! 🙂

cgrand 2017-11-20T16:31:53.000117Z

raaah I linked to unrepl/unrepl and not unrepl/unrepl.el

volrath 2017-11-20T16:39:24.000150Z

https://github.com/Unrepl/unrepl.el/commit/037c57205d44911adc236c5c57a4b9f35f2d8aed -- I guess this disclaimer is now important haha

cgrand 2017-11-20T16:40:04.000269Z

these times were you miss <blink> tags

richiardiandrea 2017-11-20T16:46:34.000205Z

Uhm why is this? There is no require there..

pesterhazy 2017-11-20T17:25:26.000302Z

@cgrand, yeah NPM's readline is a cheap knockoff

pesterhazy 2017-11-20T17:25:50.000237Z

It doesn't even have ^R

pesterhazy 2017-11-20T17:26:06.000533Z

slippery slope how?

pesterhazy 2017-11-20T17:26:31.000374Z

counterpoint: chez's repl has it

dominicm 2017-11-20T19:33:34.000332Z

I guess I need to explore a basic integration with vim now, unrepl has accelerated too quickly for me. I've just started an nrepl one!

2👍
pesterhazy 2017-11-20T21:13:46.000309Z

that may be true

pesterhazy 2017-11-20T21:14:11.000249Z

unrepl FOMO

cgrand 2017-11-20T22:53:54.000153Z

It’s more clients catching up with the protocol.