DarkLisp for Visual Studio Code
This extension registers DarkLisp .dl and template .dlhtml files, bundles
the DarkLisp language server, and enables breakpoints for emitted portable
PDBs.
Requirements
- Visual Studio Code 1.95 or later.
- The .NET 10 SDK available through
dotnet on PATH.
- The Microsoft C# extension, or another extension providing the
coreclr
debug type, when debugging DarkLisp projects or tests.
Install a packaged extension
Build the VSIX from the repository:
cd extensions/vscode
npm install
npm run package
Install the generated package and restart or reload VS Code:
code --install-extension darklisp-0.9.0.vsix
To replace an existing installation with a newly built package, add --force.
The VSIX contains the extension bundle and a framework-dependent build of the
language server; no separate language-server installation is required.
Use the language server
Open a folder or workspace containing a .dlproj, then open a .dl file. The
extension activates, launches its bundled language server with dotnet, and
connects to it over the Language Server Protocol. Language features and
diagnostics use the containing DarkLisp project and its module references.
The language server provides diagnostics, completion, hover, signature help,
definitions, references, rename, document and workspace symbols, semantic
tokens, and formatting for .dl files. Use the normal VS Code commands for
these features, such as Go to Definition, Find All References,
Rename Symbol, and Format Document.
Use the REPL
Open DarkLisp REPL in the Explorer or run DarkLisp: Open REPL. The REPL
uses the selected .dlproj build context and offers to build the project when
that context is stale or missing. Workspaces with multiple projects show an
explicit project picker; use DarkLisp: Select REPL Project to switch later.
Enter submits a balanced form, Shift+Enter adds a line, and Up/Down at the input
boundaries navigates command history. The view provides reset and cancellation
controls and renders values, diagnostics, and runtime failures in its transcript.
Selecting a submitted diagnostic returns to its originating editor form.
Run DarkLisp: Send Selection or Form to REPL or press Ctrl+Alt+Enter
(Cmd+Alt+Enter on macOS) to submit the current selection. With no selection, the
command submits the top-level form containing the cursor.
Hovering a documented callable shows its typed DarkLisp signature, summary,
parameter descriptions, return description, remarks, examples, exceptions, and
related declarations. Write the summary string and optional doc form directly
after the function name:
(defn increment
"Adds one to a value."
(doc
(param value "The value to increment.")
(returns "The incremented value."))
[value: Int32]
Int32
(+ value 1))
For language-server development, build the server and point VS Code at the
result:
dotnet build ../../src/DarkLisp.LanguageServer/DarkLisp.LanguageServer.csproj
Set darklisp.languageServer.path to the absolute path of
src/DarkLisp.LanguageServer/bin/Debug/net10.0/darklisp-language-server.dll,
then run Developer: Reload Window. Clear the setting to return to the server
bundled in the VSIX.
If the language server does not start, verify that dotnet --version reports a
.NET 10 SDK, that the opened workspace contains a .dlproj, and that the
configured development DLL exists. Language-client messages are available in
the Output panel under DarkLisp Language Server.
Tests and debugging
Template files receive HTML-aware DarkLisp syntax highlighting.
The Test Explorer discovers embedded and parameterized DarkLisp tests from the
same compiler snapshot used for diagnostics. Run and debug profiles delegate to
the generated Microsoft Testing Platform application with its stable test ID.
Test items identify same-module versus external-module tests, and Go to
Assertion navigates to each bound assertion in the selected test.
Run DarkLisp: Debug DarkLisp Project to choose a .dlproj, build it, and
launch its generated assembly through the installed CoreCLR debugger. The
command requires the .NET 10 SDK and a VS Code extension that provides the
coreclr debug type.
Set darklisp.languageServer.path to use a development language-server DLL in
place of the bundled server. Set darklisp.debug.configuration to choose the
Debug or Release output used by the debug command.
Run npm test to build the extension, publish its language server, build the
fixture project, and execute the extension-host integration suite.