Skip to content

Community-edition compatible intellij plugin #62

@asiandrummer

Description

@asiandrummer

This is somewhat the extended discussion from graphql/graphql-language-service#4. cc @martijnwalraven

@jimkyndemeyer I wanted to open an issue to keep you updated with my current progress, as well as to seek some advice from you about the next steps. As I mentioned I've noticed that this plugin isn't compatible with IntelliJ IDEA Community Edition - a tl;dr; version of this issue is that I was wondering if we could work together on providing a support for Community Edition users. This will focus on supporting Java/Android client developers who don't work with JavaScript applications day-to-day.

The most notable difference from both editions is JavaScript/NodeJS-related plugin support, which means that if we decide to develop a Community Edition plugin, we won't have support for Relay/Apollo/NodeIntepreter out of the box. I'm thinking this is okay at least in the beginning, and we can figure out writing a customized parser that can recognize syntaxes for beginning a GraphQL query within JavaScript files, if users choose to open them (e.g. graphql | gql | Relay.QL).

As per the progress on hooking up graphql-language-service repository to this library, I spent some time to see if forking a process by purely using OSProcessHandler was possible, and was able to successfully send/receive messages back and forth without using NodeInterpreter.

Like I mentioned of my plan in graphql/graphql-language-service#4, my initial inclination to tackle this problem was to incorporate what I worked on to this library. Unfortunately, because I failed to locate these constraints on time, that plan no longer seems sufficient to support Community Edition users, but I think I can at least contribute with integrating Martijn's Grammar-Kit implementation to the basic GraphQL PSI support in this library.

I think a short-term plan for myself would be:

  • Have https://github.com/apollographql/intellij-graphql/ communicate with graphql-language-service
  • Improve PSI to match the current capabilities that this library has, and add it to this library.
  • Work on substituting the message signatures in this library to match Language Server Protocol

Lastly, just to reiterate again, I'm hoping to keep the collaborative effort/spirit by being as transparent/clear as I can be. I completely understand and respect that you guys have other priorities to attend to - at the same time I didn't want to surprise you with some misunderstandings that might be caused by me not being over-communicative.

So, what do you guys think?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions