Fork me on GitHub

Is there a way to configure a hotkey so that using that hotkey I could activate either REPL 1 or REPL 2 (e.g. frontend / backend). I develop a full stack app and have both frontend and backend REPLs and jumping in the editor between frontend and backend code and would like to switch the active REPL using a hotkey instead of getting my hand from my dear Dygma Raise keyboard to the mouse and click the "frontend" or "backend" tab:


Sorry for asking this here, it is IDEA specific and the same command that switches tab in any IDEA window. So, I have a hot key to switch focus to REPL window, then another hotkey to switch tab, hotkey to jump back to editor. Case closed.


It would be nice if we can have a choice of which repl when sending forms.


and evaluating such forms will automatically switch to the repl to show the results.


I have a hotkey for focusing the repl then just switch tabs with ctrl + right/left arrow

Daniel Wellman20:01:14

Hello! I’m having problems opening a specific Leiningen project in IntelliJ 2020.3.2 with Cursive 1.10.0-2020.3. When I try to open the project folder (has a project.clj and no .idea folder or .iml) the idea.log has a message: ERROR - .LeiningenProjectOpenProcessor - Error opening project  java.lang.ClassCastException: class clojure.lang.Keyword cannot be cast to class java.lang.String I just tried creating a brand new Leiningen app and it opened fine, so I suspect there may be something with this specific project’s Leiningen configuration. Any suggestions where I should start investigating? I’ll post the full stack trace in a thread.

Daniel Wellman20:01:00

2021-01-27 14:54:49,532 [1409073]  ERROR - .LeiningenProjectOpenProcessor - Error opening project 
java.lang.ClassCastException: class clojure.lang.Keyword cannot be cast to class java.lang.String (clojure.lang.Keyword is in unnamed module of loader @41915c2f; java.lang.String is in module java.base of loader 'bootstrap')
	at cursive.leiningen.project.LeiningenProjectOpenProcessor$getProjectInfo$
	at com.intellij.openapi.progress.impl.CoreProgressManager$
	at com.intellij.openapi.progress.impl.CoreProgressManager$
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$new$0(
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(
	at java.base/java.util.concurrent.CompletableFuture$
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(
	at java.base/java.util.concurrent.ThreadPoolExecutor$
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$
	at java.base/ Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$
	at java.base/
2021-01-27 14:54:49,533 [1409074]  ERROR - .LeiningenProjectOpenProcessor - IntelliJ IDEA 2020.3.2  Build #IU-203.7148.57 
2021-01-27 14:54:49,533 [1409074]  ERROR - .LeiningenProjectOpenProcessor - JDK:; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o. 
2021-01-27 14:54:49,533 [1409074]  ERROR - .LeiningenProjectOpenProcessor - OS: Mac OS X 
2021-01-27 14:54:49,533 [1409074]  ERROR - .LeiningenProjectOpenProcessor - Plugin to blame: Cursive version: 1.10.0-2020.3 
2021-01-27 14:54:49,533 [1409074]  ERROR - .LeiningenProjectOpenProcessor - Last Action: WelcomeScreen.OpenProject 


Can you post your project.clj? I'm guessing there is some non-standard data in there. Perhaps Leiningen is not sensitive to it but (obviously) Cursive is


Yeah, I thought I recognized this error. It's because the project is using the "lein-v" Leiningen plugin.


Notice that the version identifier in the project.clj is :lein-v - Cursive expects this to be a string.


Normally, it is but the lein-v plugin allows it to be a keyword (it must play some games under the covers with Leiningen)

Daniel Wellman13:01:32

Oh! Thank you for pointing this out — I’ll look into the lein-v plug-in to learn more about that.