* Invert the dependency between ghcide and hls-plugin-api
This PR includes changes both to ghcide and HLS to implement the reorg described in https://github.com/haskell/ghcide/issues/936#issuecomment-751437853
To summarise:
- `hls-plugin-api` no longer depends on ghcide.
- `ghcide` now depends on `hls-plugin-api` and exposes:
- The ghcide HLS plugin
- The `asGhcIdePlugin` adaptor
The goals are:
- to be able to break the `ghcide` HLS plugin down
- to rewrite exe:ghcide on top of the HLS plugin model.
The ghcide side is reviewed in https://github.com/haskell/ghcide/pull/963
If this change is accepted there are two further considerations:
- This would be a good moment to merge the 2 repos, so that there is no history loss.
- `hls-plugin-api` will need to be released to Hackage prior to merging https://github.com/haskell/ghcide/pull/963
* clean up
* Fix the ghcide plugin to include the rules
* clean up PartialHandlers definition
The ghcide partial handlers for completions, code actions and hover are not
really being used, since they get overriden by the `<> ps` append. This is due
to the right-biased semantics of `PartialHandlers`
* Move ghcide LspConfig into Ide.Plugin.Config
* Use HLS plugins in ghcide
For now there is only one, the main ghcide plugin. But this will allow us to
break it down in more fine grained plugins with parallel semantics, both for
execution and error handling
* Fix hlints
* Revert "Temporarily disable the upstream branch for benchmarks"
This reverts commit 7bb3c6efae.
* Disable the Windows 8.6.4 test
* Fix unrelated hlints
Not sure why these are triggering now.
Linting should be restricted to the Diff ...
The ghcide merge includes https://github.com/haskell/ghcide/pull/948
which removes the language extension code actions
This makes the associated func-test fail, because the HLS plugin does not pass
the test (only the ghcide code action did). This is because the HLS plugin uses
commands, and the tests do not wait for the command edit to be applied.
The fix is to change the HLS plugin to return a code action with edits and no commands
Christmas comes early for QuickCheck users! This PR adds support for generating arbitrary --- including the tricky business of ensuring termination. It can be run by calling Attempt to fill hole on anything of the form arbitrary :: Gen A for some type A.
Make it possible to provide config for a plugin in a regular way, by
using a namespace in the json config space. So we have
```
haskell.plugin.hlint.globalOn
haskell.plugin.importLens.globalOn
```
It is also possible to have finer-grain config, so the individual
parts of a plugin can also be separately enabled/disabled.
Closes#513
* Split out the explicit imports plugin
* Split out the retrie plugin
* Avoid test-breaking plugin descriptor change
It changes the order in which code actions get listed.
Some of the code action tests are not very smart and break.
* Fix stack descriptors
* Add ghc-api-version.h
* add LICENSE
```haskell
-- >>> foo
--
-- >>> bar
```
After running the plugin on both prompts we end up with this:
```haskell
-- >>> foo
-- foo_output
--
-- >>> bar
-- bar_output
```
instead of
```haskell
-- >>> foo
-- foo_output
-- >>> bar
-- bar_output
```