Yet another VSCode extension for Crystal Programming Language
This extension provides support for the Crystal programming language.
It is recommended to install the Crystal programming language (platform dependendant). No other dependencies are required. For debugging support, it's recommended to follow the guide here.
do
, if
, etc.)crystal tool implementations
commandcrystal tool context
commandcrystal
/shards
commands directly from VSCodecompiler
- set a custom absolute path for the Crystal compilerdefinitions
- enables jump-to-definition (reload required)dependencies
- use the dependencies tool to determine the main for each file, required if there's multiple entrypoints to the project, can be slowflags
- flags to pass to the compilerhover
- show type information on hover (reload required)main
- set a main executable to use for the current project (${workspaceRoot}/src/main.cr
)problems
- runs the compiler on save and reports any issues (reload required)server
- absolute path to an LSP executable to use instead of the custom features provided by this extension, like Crystalline (reload required)shards
- set a custom absolute path for the shards executablespec-explorer
- enable the built-in testing UI for specs, recommended for Crystal >= 1.11 due to --dry-run
flag (reload required)spec-tags
- specific tags to pass to the spec runnerBy default, the problems runner, hover provider, and definitions provider are turned on. This may not be ideal for larger projects due to compile times and memory usage, so it is recommended to turn them off in the vscode settings. That can be done per-project by creating a .vscode/settings.json
file with:
// .vscode/settings.json
{
// Turn off slow/memory-intensive features for larger projects
"crystal-lang.definitions": false,
"crystal-lang.dependencies": false,
"crystal-lang.hover": false,
"crystal-lang.problems": false,
"crystal-lang.spec-explorer": false,
}
This extension has been tested on / should work on the following platforms:
These are some features that are planned or would be nice for the future of this project or others:
See Changelog
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature