This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-05-08
Channels
- # announcements (12)
- # aws (4)
- # beginners (92)
- # calva (2)
- # cider (28)
- # clara (11)
- # clj-kondo (5)
- # cljdoc (9)
- # cljs-dev (195)
- # cljsjs (1)
- # clojure (82)
- # clojure-italy (18)
- # clojure-losangeles (1)
- # clojure-nl (2)
- # clojure-spec (10)
- # clojure-uk (51)
- # clojurescript (40)
- # cursive (7)
- # datomic (19)
- # duct (9)
- # emacs (2)
- # figwheel (3)
- # fulcro (56)
- # graphql (8)
- # jobs (3)
- # luminus (2)
- # off-topic (15)
- # re-frame (5)
- # reitit (3)
- # ring (5)
- # shadow-cljs (22)
- # slack-help (2)
- # sql (51)
- # test-check (9)
- # vim (64)
- # yada (1)
Got Conjure injecting Compliment upon connection last night 😄 so autocomplete works out the box now. I do wonder if also injecting tools.namespaces is a step too far though :thinking_face: looks like I'd only need to inject like 2-3 files to get namespace reloading working, nice!
I've added compliment as a git submodule and I do some string replacement as it's loaded so as not to conflict with anything already loaded.
@olical are you familiar with Mr. Anderson? @benedek I'm sure would be very happy to make sure your use case is handled by it.
@olical hopefully this makes it cheaper for you to adopt Orchard as well. cider has invested a lot of time into making orchard so that a nrepl-less tool can be created. I particularly think the stacktrace parsing is top-class.
I don't think I need it because my deps are a known small set. I'm simply resolving dependency order by hand and firing code over a socket. If it was a more general case or a more complex dep I would.
i am trying to read back to get a bit of context here. what is the project you are hacking on @olical?
prepl tooling for neovim basically where everything you need is fired over the prepl as you connect
So no deps in your project, you just open a prepl (which is built in) and go. Autocomplete etc should just work.
I do need to check out Orchard at some point I guess. Right now I'm happy with how errors and things are working. I quite like just hand rolling stuff as minimal as possible.
@olical the problem with hand rolling is that well-trodden edge-cases get missed, for example javadocs is a nightmare that orchard has resolved.
or finding the file/line/column of something, it's fine for simple vars, but gets complex when you throw protocols/records in there (one of those, I forget which)
Yup, for sure. Definitely something I want to look into, just kinda getting my core features nailed first then I'll work on polishing each part I guess.
I vaguely know how the one in orchard works, but ideally you would never need to know in order to build something cool like Conjure :)
I hope you have a strong stomach https://github.com/Olical/conjure/blob/a0e7c1b5196351b7baa49dba14ad7c3efdd728a1/src/conjure/code.clj#L126-L152
Building Conjure with Conjure has been a fun experience. If I break eval I can't fix it 😆
I think I'll try to adopt things like orchard at some point, I've just been only adding dependencies when it's an absolute requirement. If I can get by without then yay.
Can I use it in one JVM and send code over the wire to another though? Like does it work with static code?
hm… at the moment it spits out files really. dependency definitions and the project’s own files using those deps in
https://github.com/clojure-emacs/orchard/blob/master/src/orchard/info.clj#L20-L32 this is all the ways you can get metadata in orchard. special symbols are another annoying one :)
there is https://github.com/benedekfazekas/mranderson/issues/34 and https://github.com/benedekfazekas/mranderson/issues/35 so API might need a bit of work
you would inject it into namespaces in the target JVM, then call those functions and process the results :)
WRT Mr Anderson, that could work. I'd just do it ahead of time in my project. Sounds pretty good and similar to what I'm doing anyway. WRT Orchard: Sounds good and what I'd expect! I will definitely have a dig. Can probably replace a lot of my code with that. I do worry if I load too much on connection I'll be sending a LOT of code over that prepl. I'll have to make sure it doesn't get too sluggish.
Previously, orchard was paired with https://github.com/clojure-emacs/cljs-tooling/ @richiardiandrea is working to unify them in https://github.com/clojure-emacs/orchard/pull/37
cljs-tooling is still seeing active work atm though (a few months ago) so is still usable. And probably has covered some edge cases itself too :)
Still need to work out how to set the source file and maybe the current line when evaluating CLJS. I don't know if it's possible like it is with Clojure.
or, maybe just asking @bhauman / @cichli directly. They're pretty knowledgable on that stuff.
I'm pretty sure that fireplace solves this for line number by sending a bunch of newlines :)
Piggieback executes within Clojure, prepls fire directly into ClojureScript so you don't have access to the parent context AFAIK.
ooh, I see. You're using a cljs prepl, not an in-clojure prepl with access to the compiler. Interesting.
Yup. So even more restricted. I was thinking maybe I can do some weird things with #=...