Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ease-dev] Editor code completion

Hi,

I am currently implementing the editor auto-completion and am thinking on how to have a generic solution for both auto-completion and the corresponding help information.

There is (sadly) no single extension point to add auto-completion to any editor and each language has its own interface. Since I already implemented the CompletionProviderDispatcher class for the shell auto-completion I thought it would be nice to offer a similar interface (or even better extend the existing) for editors as well. This interface would offer a way to parse documents for completion and return a generic list of proposals. These proposals could then be parsed by the different scripting languages to the format their completion extension needs. I guess that this generic list could also help simplify Vidura's help tips.

In the end I guess we would need:
  • The class the completion suggestion belongs to
  • The name of the completion suggestion
  • The actual object of the completion suggestion with corresponding type

We already have a ICompletionSource interface that stores basically this information. If we extend/change the ICompletionProvider interface to return a list of these ICompletionSource objects it would be easy to parse them to the corresponding types for different auto-completion. It would further make things for Vidura a lot easier (I guess). Do you agree?

I have been playing around with this solution and I can already reuse the completion providers for loaded modules and in addition the call-chain analysis for them. The actual completion providers are exactly the same, I only use different wrapper methods to have them in the correct format for the live-shell and the JS editor. They are loaded dynamically via an extension point so adding new ones is fairly simple.

Vidura, the ICompletionSource interface should already be upstream so you could have a look at it (org.eclipse.ease). Maybe this will simplify your task a bit and in exchange you can help me with the different type detection features for the editor since we both need them ;-)

Best regards,
Martin


Back to the top