Fork me on GitHub
#boot
<
2018-02-10
>
drewverlee00:02:45

actually autocomplete for all functions doesn’t work.

seancorfield00:02:54

First off, you don't need in-ns at any point. Second, It doesn't sound like you have your source file folder on your classpath? You didn't mention build.boot so I'm assuming you don't have one.

seancorfield00:02:45

You'll want to tell Boot to put your source files on the classpath: (merge-env! :resource-paths #{"src"}) -- assuming you're creating files in the src folder tree?

seancorfield00:02:19

You can say (boot.user/merge-env! :resource-paths #{"src"}) if you're in a different namespace.

seancorfield00:02:06

If you have a build.boot file in your project folder (instead of project.clj), and you do cider-jack-in I would expect it to start a REPL using Boot (although it's been a long time since I used Emacs/CIDER).

seancorfield00:02:28

As I recall, when you do cider-jack-in, CIDER itself injects various dependencies which is what helps provide the auto-completion functionality I think? Otherwise, you'll just have a bare REPL with whatever dependencies you specified at startup.

seancorfield00:02:11

Does any of that help @drewverlee?

drewverlee00:02:56

@seancorfield I'm guessing it helps a ton. I'll need to get back to my computer to check ☺️

seancorfield04:02:08

@drewverlee I'm back home and online (with a beer) so if you have any Qs, I'm around again 🙂

drewverlee04:02:24

I teased out some of the details and i’m able to add projects without restarting my repl 🕺

drewverlee04:02:29

I was going to pull in mount as a way to solve the next issue which was having to reload after re-defining multimethods. I need a fresh day to read about mount, component and integrant which all set out to help with application state. I did some reading about component and i understand a bit of the differences but i should dig deeper into the problem so i have less of a superficial understanding. Does using boot impact anything concerning application state managment?

seancorfield04:02:03

@drewverlee We use Component at World Singles. It feels a bit OOP but it also feels a bit cleaner about state management. Mount looks "easier" but not "simpler" because it seems to still have global mutable state. I haven't looked at Integrant.

drewverlee04:02:13

Thanks for the insight. i’ll fiddle a bit with them all to hopefully get a deeper understanding

drewverlee04:02:52

or apparently try one of these strategies: https://stackoverflow.com/questions/44807442/how-to-reload-a-multimethod-in-clojure-rep. which is a bit odd. i’m confused about what namespace/clear is supposed to do . it says it clears all the state, but i would that effective remove everything… references to functions,etc… but those remain

seancorfield04:02:29

@drewverlee are you already doing the trick where you def the multimethod to nil directly above the defmulti?

drewverlee04:02:15

@seancorfield nope. Is that one in the SO question?

seancorfield04:02:37

Dunno. It's a technique to make reloading a namespace containing a multimethod work "as expected".

seancorfield05:02:00

I didn't read the SO post.