I recently made my repo public and released a rather primitive version but already usable of a plugin to support Candid inside any intellij based editor.
It has for now only a few basic feature but it is my goal to work on it on the upcoming weeks so expect to see a few updates.
A random screenshot to show what it looks like with a random code taken on github
Just wanted to share it, maybe it will be useful to someone even at the early stage.
Since I made this topic, I will keep using it as a sort of changelog but with more visual. I just made an update to v0.1.0 fixing a few things and features.
Auto import on completion
Menu entry to create a new file
Show if a type is not from the current file during the completion:
Please note whenever I make an update although the entire release process is well automated through github actions - the jetbrains marketplace is manually reviewing every update. It usually takes around 1-2 business day. There’s also the option to directly grab the plugin on github in the release section if you want it faster.
Incredible work! Thanks a lot!
Just can’t believe my eyes seeing this
@Alaanor looks great! I don’t use IntelliJ so I’m wondering if this is (or could be) implemented using the language server protocol so that other editors could benefit from it as well.
Nope, unfortunately intellij way to make a language plugin is different from implementing a custom language for the language server protocol that most editor use. I was aware of this constraint from the beginning and still made the choice to go with this. There’s some github repo that have tried making the conversion possible but nothing of production grade. Imo this is something that has to be build twice, let’s hope someone will do it during the supernova hackathon
Amazing stuff Alaanor! If you’d like to implement the language server for this as well that would be grant material dfinity.org/grants.
Sorry for the delay and that’s really cool to know this would be grant material @Fulco, thanks. I’m not yet sure whatever I’ll do it but there’s good chance I’ll just focus on this one rather for now.
I recently released the v0.2.0 which include a bunch of new small features. To make it more visual, here are some screenshots showing the added content.
Suggest missing import whenever possible
Marking self import as invalid (#2)
Marking duplicated type name as invalid (#3)
Also some fixes:
- Added missing top level keyword import
- Missing keyword completion for query and oneway
- Stop suggesting top level keyword inside a service
Concerning unit testing - This is something I would like to add, I am not yet sure how much of it is doable. I will probably dedicate a week to it.
Awesome ! Thanks a lot for this plugin, will try it asap !
Hello ! This time the release is the latest feature release . I consider the plugin to have enough feature. If there’s anything still missing in your opinion, now is the good time to create a github issue and suggest
The release v0.3.0 was focused on integrating rust in the plugin.
Line marker on rust files when a matching candid method is found
You can click on the line marker in the gutter and it will bring you directly to the corresponding candid method.
Resolve candid method to their corresponding rust method
Unused candid method inspection
How does the plugin detect rust correctly ?
For the sake of correctness, the plugin will only enable rust integration for a given candid file if the followings are found in
package fields are required to enable rust integration.
dfx.json is expected to be found at the root of the project. The type
custom will not be supported because of the lack of explicit information that the plugin require to correctly resolve items.
Whats coming next ?
I will probably dedicate the remaining weekends for making the plugin more resilient by adding multiples unit tests, improve the codebase quality and optimizing performance if required.
Ps: @GLdev maybe now this feature can convince you to use clion