Here's a shocker for ya': Calva isn't perfect. 😄
There are quirks and things that flat out do not work. We'll try to collect info about such things here, providing workarounds when available (or, rather, known to us).
Test features not available with ClojureScript
cider-nrepl does not provide its test functionality for ClojureScript code. Please consider contributing to fixing that.
Using with Parinfer
Calva defaults to formatting as you type. If you use Parinfer this creates a conflict, since it auto-indents your code. If you want to use Parinfer you'll have to tell Calva not to do auto-formatting by disabling
However, with VS Code and Calva it is probably better to learn to use Paredit's slurp and barf and generally use Calva's automatic formatting.
MacOS and the Slurp and Barf Keyboard Shortcuts
To make slurping and barfing forward really easy to perform they are bound to
ctrl+left, respectively. However, on MacOS those shortcuts are sometimes bound by Mission Control, causing the Calva shortcuts to not work. One way to solve it is to disable the shortcuts in System Preferences -> Keyboard -> Shortcuts:
Calva and the VIM Extension
”Command not found” Errors on Jack-in
Jack-in starts by running a command in a new terminal. You will need the commands used installed on your computer:
clojurefor tools.deps/Clojure CLI
Also, in some circumstances VS Code is not spawned from a shell with the environment variables, especially
$PATH, which might mean that even though you have the tools installed, they are not found when VS Code/Calva tries to execute them. To fix this you will need to do one of these two things:
- Figure out from where VS Code is spawned, and make sure the
$PATHthere includes the directoy with the needed binary.
- Start VS Code from a terminal where the
$PATHis correctly configured. (Using the
See this issue for more clues on this problem.
Strange linting errors?
This is not really a quirk, and most linting errors are not strange when you learn about why they are there. Calva does not do any linting, btw, see also linting.