Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Community-edition compatible intellij plugin #62

Closed
asiandrummer opened this issue Feb 18, 2017 · 7 comments
Closed

Community-edition compatible intellij plugin #62

asiandrummer opened this issue Feb 18, 2017 · 7 comments
Labels

Comments

@asiandrummer
Copy link

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:

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?

@martijnwalraven
Copy link
Collaborator

That sounds like a sensible plan. Good to hear you're still working on this. I'm pretty busy with our iOS GraphQL client right now, but I'd be happy to help in any way I can.

I remember it took quite some time to get Grammar-Kit to do what I wanted, so if you encounter any difficulties making changes I might be able to help. Have you gotten it to run with the Grammar-Kit plugin yet?

I'll leave it to you whether you want to build on apollographql/intellij-graphql or bring that over to this repo. (My plan was to start with a clean slate and bring features over one by one so I better understood what was going on and could rebuild features on the new generated PSI.)

@jimkyndemeyer
Copy link
Collaborator

Sounds good to me.

If I recall correctly, we might be able to create and publish a single version of the plugin by using <depends optional=true> in the plugin.xml for JavaScript support.

@asiandrummer
Copy link
Author

Hi guys! I've been working hard on this (Java is hard...heh), and it's been a while since I kept in touch, so let me provide some status update!

@martijnwalraven - using your intellij-plugin, I was able to talk to the language service and provide diagnostics to IntelliJ client! My plan is to finish integrating go-to definitions and start testing internally first. I'd love to submit PR to intellij-plugin repo, but before that let me reach out with some questions about the plugin via Slack.

@jimkyndemeyer I started to think about how we can merge the efforts once I'm at the point to do so. I definitely want to leverage your suggestion for optionally including JavaScript support for those with Ultimate version. I don't think there's any actionable items at this point, but just wanted to keep you in the loop.

@martijnwalraven
Copy link
Collaborator

@asiandrummer: That sounds great! Really glad intellij-plugin turned out to be useful, I feel bad I haven't been able to put more effort in this. Happy to answer any questions.

@jimkyndemeyer
Copy link
Collaborator

@asiandrummer Thanks for the update. With regards to compatibility, I still see Watchman as having Alpha status on Windows: facebook/watchman#19. Any way you can ensure we don't cause issues for Windows users with the new version, e.g. by reaching out to the Watchman team?

@asiandrummer
Copy link
Author

@jimkyndemeyer that's a great insight - thanks for sharing. I can/will reach out to Watchman team (Wez) about that. I did have a plan to add a backup support in case Watchman wasn't available to use the IDE file watching support/OS file system API, but am not sure how useful that'd be and if it'd be better to keep relying on Watchman and improve that instead.

@jimkyndemeyer
Copy link
Collaborator

The 2.0 alpha release works in Android Studio and IntelliJ IDEA Community Edition.

See #164 and https://github.com/jimkyndemeyer/js-graphql-intellij-plugin/releases/tag/2.0.0-alpha-2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants