Calva When Clause Contexts#
When clause contexts is a powerful customization mechanism in VS Code. The most common use for end users is with keyboard shortcut bindings. Extensions can provide their own. The following contexts are available with Calva:
calva:keybindingsEnabled: a master switch that you find in the settingsparedit:keyMap:strict,original, ornonefrom the corresponding Calva setting (see Paredit)calva:connected:truewhen Calva is connected to a REPL (there is alsocalva:connecting||calva:launching)calva:outputWindowActive:truewhen the Output/REPL window has input focuscalva:replHistoryCommandsActive:truewhen the cursor is in the Output/REPL window at the top level after the last promptcalva:replWindowSubmitOnEnter:truewhen the cursor is adjacent after the last top level form in the Output/REPL windowcalva:cursorInString:truewhen the cursor/caret is in a string or a regexpcalva:cursorInComment:truewhen the cursor is in, or adjacent to a line commentcalva:cursorBeforeComment:truewhen the cursor is adjacent before a line commentcalva:cursorAfterComment:truewhen the cursor is adjacent after a line commentcalva:cursorInWhitespaceAfterComment:truewhen the cursor is in whitespace after a line commentcalva:cursorAtStartOfLine:truewhen the cursor is at the start of a line including any leading whitespacecalva:cursorAtEndOfLine:truewhen the cursor is at the end of a line including any trailing whitespacecalva:projectRoot: A string with the absolute path to the repl project root, without trailing slashcalva:ns: A string with the current namespacecalva:replSessionType:clj, orcljsdepending on the file type of the current filecalva:connectSequence: The name of the currently selected Connect Sequence
Here's an example using the calva:connectSequence context for binding keyboard shortcuts depending on it. (Requires Joyride, which you really should have installed!)
{
"key": "cmd+ctrl+r",
"command": "joyride.runCode",
"args": "(require '[\"vscode\" :as vscode]) (vscode/window.showInformationMessage \"deps.edn + shadow-cljs\")",
"when": "calva:connectSequence == 'deps.edn + shadow-cljs'"
},
{
"key": "cmd+ctrl+r",
"command": "joyride.runCode",
"args": "(require '[\"vscode\" :as vscode]) (vscode/window.showInformationMessage \"deps.edn\")",
"when": "calva:connectSequence == 'deps.edn'"
},
See also the Calva extension manifest for how the built in keybindings use these contexts. (Search for keybindings on that page).