Skip to content

๐Ÿ“š Learning and exploring Intellij IDEA plugin development

Notifications You must be signed in to change notification settings

dgroomes/intellij-plugin-playground

Repository files navigation

intellij-plugin-playground

๐Ÿ“š Learning and exploring Intellij IDEA plugin development.

Standalone subprojects

This repository illustrates different concepts, patterns and examples via standalone subprojects. Each subproject is completely independent of the others and do not depend on the root project. This standalone subproject constraint forces the subprojects to be complete and maximizes the reader's chances of successfully running, understanding, and re-using the code.

The subprojects include:

hello-world-plugin/

A simple "Hello World" Intellij plugin.

See the README in hello-world-plugin/.

Wish List

General clean-ups, TODOs and things I wish to implement for this project:

  • DONE Update this project for 2023.
  • DONE (I created the http-client-enricher-for-github-plugin subproject) Can I make a plugin that extends the HTTP client support in Intellij? The HTTP client tooling in Intellij (e.g. .http files) is more sophisticated than I knew and I get the impression that it's more polished than I would have expected. They added lots more features in the Intellij IDEA 2023.2 release. The momentum is strong. I really like Insomnia, but I've always struggled to share HTTP requests with others. If I can use Intellij for what I use Insomnia for, I'd be happy to switch because then I can simply version control my HTTP requests (text is king (as much as it's painful to admit)) and share them with others. The feature I'm not sure about is "low friction and secure access key management". I need to be able to use the HTTP client tooling in Intellij and not have to worry about accidentally committing my credentials and not have to hassle with manually copy/pasting my credentials too much (Insomnia's Auth tab is amazing). Can I create an Intellij plugin that injects the HTTP client state with something (like a credential)? I kind of doubt it. UPDATE: yes it's totally possible.
  • DONE clean up scaffolded gradle project
  • DONE Runnable "do-nothing" junit tests
  • DONE First commit
  • DONE link to referenced materials (Intellij SDK docs)
  • DONE Wire in some plugin boilerplate build stuff (Gradle, xml files, not really sure where to start...)
  • DONE implement a "hello world" plugin
  • DONE Make the plugin behavior interactive. For example, it could respond to click events.
  • DONE (but delete it because it was too easy and matched the docs perfectly. No need to keep it as my own code to maintain) Explore how to use secrets in Intellij. How does Intellij access the keychain? How do database passwords get stored by Intellij when using its data-access tools?

Reference

About

๐Ÿ“š Learning and exploring Intellij IDEA plugin development

Topics

Resources

Stars

Watchers

Forks