Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[wtp-dev] JSDT enhancements

Hello,

I'd like to introduce a variant of JSDT that I've been working on. It's goal is to improve the quality of _javascript_ content assist without requiring JSDoc, VJO, or otherwise constraining how one writes _javascript_.

The main difference to existing JSDT is that it uses NJSDoc [1] as the data source. NJSDoc works by executing code in a modified Rhino runtime and analyzing the resulting structure. The Rhino runtime is modified in two ways: very few things will cause an error and second it stores the code location of every assignment and slot creation. This allows the NJSDoc algorithm to calculate precise definition locations even in nested or indirectly created classes or structures.

JSDT integrated with the NJSDoc algorithm is efficient. For a very large 70,000 line of code project here are the costs:
  • 5.5Mb of cached Rhino bytecode
  • 4.5Mb for the NJSDoc structure including resolved class hierarchy and comments attached to the structure
  • 800ms to naively recreate the global NJSDoc structure after an edit
I've implemented basic integration with type resolution. Global variable and class member completion is working. Also hoverdoc and jump to definition is working.

Here is my plan:
  • Use JSDoc comments to hint types
  • Add ability to manually hint the type of a local variable (an example of this in Scheme is here [2])
  • Built in support for AMD spec and maybe CommonJS modules
  • Improve performance, eliminate more JDT specific code
Eventually I'd like the code to be merged back into JSDT assuming it proves useful to users. I'll share the code and set up an update site soon.

Let me know if you have any comments on this approach or in general.

Regards,
John


[1] https://bitbucket.org/nexj/njsdoc
[2] http://imgur.com/a/VTYAi

Back to the top