Playground to test the analyzer plugin for `.moor` files. 

Currently, we support

- showing errors in moor files
- outline
- folding
- (very, very limited) autocomplete
-  some quickfixes to make columns nullable or non-null
- navigation for references in sql queries

## Setup
To use this plugin, you'll need to perform these steps once. It is assumed that you
have already cloned the `moor` repository.

1. Make sure you run version `3.5.0` or later of the Dart extension in VS Code.
2. In the editor settings, change `dart.additionalAnalyzerFileExtensions`
   to include `moor` files:
   ```json
   {
       "dart.additionalAnalyzerFileExtensions": ["moor"]
   }
   ```
3. Uncomment the plugin lines in `analysis_options.yaml`
  
## Debugging
Note: If you only want to _use_ the plugin and don't care about debugging it, follow the step
from the [user documentation](https://moor.simonbinder.eu/docs/using-sql/sql_ide/).

After you completed the setup, these steps will open an editor instance that runs the plugin.
1. chdir into `moor_generator` and run `dart bin/moor_generator.dart debug-plugin`.
   You can run that script from an IDE if you need debugging capabilities, but starting 
   it from the command line is fine. Keep that script running.
3. Uncomment the `plugin` lines in `analysis_options.yaml`
3. Open this folder in the code instance
4. Wait ~15s, you should start to see some log entries in the output of step 1. 
   As soon as they appear, the plugin is ready to go.
   
_Note_: `bin/moor_generator.dart` doesn't support multiple clients. Whenever you close or reload the
editor, that script needs to be restarted as well. That script should also be running before 
starting the analysis server.

## Troubleshooting

If the plugin doesn't start properly, you can

1. make sure it was picked up by the analysis server: Set the `dart.analyzerDiagnosticsPort`
   to any port and see some basic information under the "plugins" tab of the website started.
2. When setting `dart.analyzerInstrumentationLogFile`, the analysis server will write the
   exception that caused the plugin to stop