Fork me on GitHub

@kingmob I’m not sure why :welcome wouldn’t be shown, since Cursive doesn’t mess with that part at all - perhaps it’s a REPLy thing? I’m not sure.


There isn’t an ns cleanup yet, although it’s one of the most regularly requested things so it’s near the top of my list. I’m slowly working through the list of cases required to make it work reliably in cljc, which is the main blocker.

Matthew Davidson (kingmob)00:04:31

Well, if you can make ns clean-up work in cljs, you’ll be ahead of CIDER. It routinely messed up converting :use to :require.


Nice to know - both clj and cljs are relatively easy, as is cljc if there are no reader conditionals.


Modern cljs actually requires far fewer of them, but the ns form is still one of the main places they’re used.

Matthew Davidson (kingmob)00:04:48

Only other caveat is, be careful removing unused namespaces from ns. Especially with foreign-libs, there can be included namespaces that have no obvious symbols referred to, so it’s easy to assume they’re unused. But they may supply js/ globals or even necessary polyfills.

Matthew Davidson (kingmob)00:04:45

BTW, would you suggest cljc as a way to mix cljs fns with their macros… or not?


It depends. If you are writing cljs, and the only reason you need the clj is for a macro, then it can be ok; however, it gets really confusing to have them in the same file. I generally recommend keeping them separate. I beat my head against a wall for almost an entire day doing something that I saw in a file that I thought was written by David Nolen that combined them into a single file. Turns out it was a contrib that had a deeply confusing problem that neither the author nor David caught that combined them in a CLJC file in a way that was impossible to ever work. The reason it didn’t get caught is that the change was for an optimization…so everything looked to work when tested…it was just slower than intended.


Yeah, it can be hard to tell if a namespace is really required. In clj as well, an app can rely on load order (not a good idea, but apps can and do do it)


I’m probably not a great person to ask about your cljc question, since my use of cljs is very simple (I’ve never actually written a cljs macro)

Matthew Davidson (kingmob)00:04:01

@cfleming No worries, and thanks for all your help!


@kingmob Yes, :welcome is handled by REPLy, which Cursive bypasses altogether.


(or to be more accurate, lein converts that to :custom-help, which REPLy uses)


You could use a user.clj which prints your message, maybe?

Matthew Davidson (kingmob)16:04:26

@cfleming Does “Find Usages” ignore profile-specific source paths? E.g., I have a fn that’s only used under env/dev/cljs/, which is only added in the :dev profile. If I run “Find Usages”, it won’t be found, but if I just do plain “Find”, it has no issues locating it.


hey has anybody upgraded intellij on mac? I’m scared to do it because when i upgraded from CE to UE, I lost all of my settings. If i just drag the icon into applications, is that going to work?


Yeah, I just upgraded to the latest IntelliJ that way, no problems. It asked if I wanted to import my old settings and I said Yes, and boom, ready to go


If you want a backup copy of everything you could re-name the old app and look for it’s data folder in ~/Library/Application Support


Looks like the App Support folders are all versioned though, so you should be safe.


(My version numbers go back to 2017.2, so maybe that’s a recent change)


great thanks. it’s working nicely


@kingmob Is env/dev/cljs marked as a source root, i.e. in blue in the project view?

Matthew Davidson (kingmob)22:04:25

Though env/prod/cljs wasn’t


Hmm, then I’m not sure why find usages wouldn’t find it.


Once a source path is marked as such, IntelliJ makes no distinction between them. The profile stuff only affects the actual import itself, i.e. which paths are marked as sources.

Matthew Davidson (kingmob)22:04:19

Wait, I think I figured it out. The same fn is coming from a different ns in dev. The real thing is only in prod. When I added the prod dir, “Find Usages” found it


Ah, that would explain it.

Matthew Davidson (kingmob)22:04:13

Do we need to be careful about specifying resources and exclusing output dirs?


Excluding output dirs is generally a good idea, yes, particularly with CLJS, since they get filled with gnarly JS code which IntelliJ will otherwise try to index.


Resources are just slightly different source paths, really.