The Curry ecosystem provides a number of external tools for analyzing source code (e.g. totality checkers, documentation generators, ...) that would be nice to have in the language server. Since adding such integrations manually can be a bit cumbersome and would introduce dependencies on bespoke tools, we could let the user configure their tools via JSON/options (and potentially provide templates for either existing tools or custom tools in the VSCode extension!). Using the existing configuration infrastructure also has the benefit that this could be both customized globally (in the user's VSCode settings) or on a per-project basis (in .vscode/settings.json).
Some further ideas on this:
The user should be able to configure where the integration appears, e.g.
...in hovers
...as code lenses
...as code actions
Maybe even using a non-standard request or custom command in a context menu
This would likely require client-side support too (e.g. in the VSCode extension)
The format should provide a way of specifying an executable and arguments using some form of templating syntax
Template parameters could expose various details about the editing context, e.g.
The source file
The module name
The selection span
The selected/hovered symbol
We should probably define an output format that we can parse
Also JSON-based?
Perhaps also make this configurable, so users could also integrate tools whose output can be displayed directly
The Curry ecosystem provides a number of external tools for analyzing source code (e.g. totality checkers, documentation generators, ...) that would be nice to have in the language server. Since adding such integrations manually can be a bit cumbersome and would introduce dependencies on bespoke tools, we could let the user configure their tools via JSON/options (and potentially provide templates for either existing tools or custom tools in the VSCode extension!). Using the existing configuration infrastructure also has the benefit that this could be both customized globally (in the user's VSCode settings) or on a per-project basis (in
.vscode/settings.json
).Some further ideas on this: