| # IntelliJ Plugin for FIDL |
| |
| This repository contains the IntelliJ plugin for |
| [FIDL](https://fuchsia.dev/fuchsia-src/development/languages/fidl). For |
| information about contributing to this project, please read |
| [CONTRIBUTING.md](./CONTRIBUTING.md). |
| |
| ## Setup |
| |
| To start, `git clone` this repository into a local directory named `fidl-plugin` |
| (the name is important - it is referenced by the IntelliJ configs stored in the |
| `/.iwjb` folder). This may be done from either the command line or the built in |
| IntelliJ git interface. |
| |
| If you do not already have [Bazel](https://bazel.build/), install the command |
| line `bazel` package, following the instructions for your platform. |
| |
| Next, install the following 3 IntelliJ plugins. While not strictly required, |
| using these will make working on the FIDL plugin a much smoother experience: |
| |
| * [Bazel](https://plugins.jetbrains.com/plugin/8609-bazel) - This repo uses |
| the [Bazel](https://bazel.build/) build system. The Bazel |
| [plugin](https://ij.bazel.build/) allows for easier build and debug |
| integration. |
| * [Grammar-Kit](https://plugins.jetbrains.com/plugin/6606-grammar-kit) - A |
| JetBrains authored plugin that provides syntax highlighting and automatic |
| code generation for |
| [.bnf](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form) and |
| [.flex](https://www.jflex.de/) files. |
| * [PSIViewer](https://plugins.jetbrains.com/plugin/227-psiviewer) - Helpful |
| for navigating the IntelliJ plugin model during development. |
| |
| The FIDL plugin is developed using JetBrains' |
| [DevKit](https://plugins.jetbrains.com/docs/intellij/using-dev-kit.html) |
| platform, so open the repository in IntelliJ and follow the instructions found |
| [here](https://plugins.jetbrains.com/docs/intellij/setting-up-environment.html) |
| to set up a local plugin development environment. |
| |
| ## Building |
| |
| If you are using the Bazel plugin mentioned above, you should have a `Build |
| Plugin` Run Configuration preloaded in IntelliJ for you. You may also build |
| from the command line by navigating to the `fidl-plugin` directory and invoking |
| the following command: |
| |
| ```bash |
| bazel build :fidlplugin |
| ``` |
| |
| ## Development |
| |
| To test plugin changes, you'll need to go through the laborious process of |
| reloading the plugin from source, then restarting IntelliJ to view your changes. |
| The plugin can be reloaded as follows: |
| |
| 1. Navigate to **Plugins** in your settings, and uninstall the existing FIDL |
| Plugin (if one has already been installed). |
| 2. At the top of the dialog, click the settings icon next to **Marketplace** |
| and **Installed**, then select **Install Plugin from Disk...** from the |
| dropdown. |
| 3. Install the plugin JAR, located at `fidl-plugin/blaze-bin/fidlplugin.jar`. |
| |
| Repeat the above each time you make a change. Note that there may be a more |
| ergonomic workflow that integrate with IntelliJ's "Run..." functionality to |
| automatically build and run a sandboxed copy of IJ with your plugin installed. |
| If you figure out how to do this, please update this document with instructions. |
| |
| If you add/remove BNF rules, make sure to update the relevant generated `.java` |
| dependencies in the `/src/fuchsia/developer/plugin/fidl/BUILD` file. |