diff --git a/Changelog.md b/Changelog.md index 89407e48..9aea7199 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,10 @@ # Changelog for vscode-haskell +## 2.2.0 + +- Bump version to 2.2.0 (Syncs up pre-release and release version) + ([#594](https://github.com/haskell/vscode-haskell/pull/594)) by @fendor + ## 2.0.1 - Bad error message when ghcup is not installed diff --git a/README.md b/README.md index d2e0d980..485c9c98 100644 --- a/README.md +++ b/README.md @@ -164,20 +164,29 @@ The defaults (when omitted) are as follows: When a the value is `null`, the extension will refrain from installing it. +At last, if you don't want `ghcup` to manage any of the external tools except `hls`, you can use: + +```json +{ + "haskell.toolchain": { + "ghc": null, + "cabal": null, + "stack": null + } +} +``` + ### Supported GHC versions -These are the versions of GHC that there are binaries of `haskell-language-server-1.6.1` for. Building from source may support more versions! +These are the versions of GHC that there are binaries of `haskell-language-server-1.7.0` for. Building from source may support more versions! | GHC | Linux | macOS | Windows | | --------------------------------------------------------------------------------- | ----- | ----- | ------- | +| 9.2.2 ([limited](https://github.com/haskell/haskell-language-server/issues/2179)) | ✓ | ✓ | ✓ | | 9.2.1 ([limited](https://github.com/haskell/haskell-language-server/issues/2179)) | ✓ | ✓ | ✓ | | 9.0.2 ([limited](https://github.com/haskell/haskell-language-server/issues/297)) | ✓ | ✓ | ✓ | -| 9.0.1 ([limited](https://github.com/haskell/haskell-language-server/issues/297)) | ✓ | ✓ | ✓ | | 8.10.7 | ✓ | ✓ | ✓ | -| 8.10.6 | ✓ | ✓ | ✓ | -| 8.10.5 | ✓ | ✓ | ✓ | | 8.8.4 | ✓ | ✓ | ✓ | -| 8.8.3 | ✓ | ✓ | | | 8.6.5 | ✓ | ✓ | ✓ | The exact list of binaries can be checked in the last release of haskell-language-server: @@ -201,6 +210,8 @@ The language server is now started for each workspace folder you have in your mu Please include the output when filing any issues on the [haskell-language-server](https://github.com/haskell/haskell-language-server/issues/new) issue tracker. +## FAQ + ### Troubleshooting #### Check issues and tips in the haskell-language-server project diff --git a/package.json b/package.json index ff00648d..3a874c19 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "haskell", "displayName": "Haskell", "description": "Haskell language support powered by the Haskell Language Server", - "version": "2.0.1", + "version": "2.2.0", "license": "MIT", "publisher": "haskell", "engines": { @@ -207,109 +207,248 @@ "type": "integer", "description": "Maximum number of completions sent to the editor." }, - "haskell.plugin.importLens.codeActionsOn": { - "scope": "resource", - "type": "boolean", + "haskell.plugin.alternateNumberFormat.globalOn": { "default": true, - "description": "Enables explicit imports code actions" + "description": "Enables alternateNumberFormat plugin", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.importLens.codeLensOn": { + "haskell.plugin.callHierarchy.globalOn": { + "default": true, + "description": "Enables callHierarchy plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.changeTypeSignature.globalOn": { "default": true, - "description": "Enables explicit imports code lenses" + "description": "Enables changeTypeSignature plugin", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.hlint.codeActionsOn": { + "haskell.plugin.class.globalOn": { + "default": true, + "description": "Enables class plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.eval.config.diff": { "default": true, - "description": "Enables hlint code actions (apply hints)" + "markdownDescription": "Enable the diff output (WAS/NOW) of eval lenses", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.hlint.diagnosticsOn": { + "haskell.plugin.eval.config.exception": { + "default": false, + "markdownDescription": "Enable marking exceptions with `*** Exception:` similarly to doctest and GHCi.", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.eval.globalOn": { "default": true, - "description": "Enables hlint diagnostics" + "description": "Enables eval plugin", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.hlint.config.flags": { - "markdownDescription": "Flags used by hlint", + "haskell.plugin.ghcide-code-actions-bindings.globalOn": { + "default": true, + "description": "Enables ghcide-code-actions-bindings plugin", "scope": "resource", - "default": [], - "type": "array" + "type": "boolean" }, - "haskell.plugin.eval.globalOn": { + "haskell.plugin.ghcide-code-actions-fill-holes.globalOn": { + "default": true, + "description": "Enables ghcide-code-actions-fill-holes plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.ghcide-code-actions-imports-exports.globalOn": { "default": true, - "description": "Enables eval plugin" + "description": "Enables ghcide-code-actions-imports-exports plugin", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.eval.config.diff": { - "markdownDescription": "When reloading haddock test results in changes, mark it with WAS/NOW.", + "haskell.plugin.ghcide-code-actions-type-signatures.globalOn": { + "default": true, + "description": "Enables ghcide-code-actions-type-signatures plugin", "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.ghcide-completions.config.autoExtendOn": { "default": true, + "markdownDescription": "Extends the import list automatically when completing a out-of-scope identifier", + "scope": "resource", "type": "boolean" }, - "haskell.plugin.eval.config.exception": { - "markdownDescription": "When the command results in an exception, mark it with `*** Exception:`.", + "haskell.plugin.ghcide-completions.config.snippetsOn": { + "default": true, + "markdownDescription": "Inserts snippets when using code completions", "scope": "resource", - "default": false, "type": "boolean" }, - "haskell.plugin.moduleName.globalOn": { + "haskell.plugin.ghcide-completions.globalOn": { + "default": true, + "description": "Enables ghcide-completions plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.ghcide-hover-and-symbols.hoverOn": { "default": true, - "description": "Enables module name plugin" + "description": "Enables ghcide-hover-and-symbols hover", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.splice.globalOn": { + "haskell.plugin.ghcide-hover-and-symbols.symbolsOn": { + "default": true, + "description": "Enables ghcide-hover-and-symbols symbols", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.ghcide-type-lenses.config.mode": { + "default": "always", + "description": "Control how type lenses are shown", + "enum": [ + "always", + "exported", + "diagnostics" + ], + "enumDescriptions": [ + "Always displays type lenses of global bindings", + "Only display type lenses of exported global bindings", + "Follows error messages produced by GHC about missing signatures" + ], + "scope": "resource", + "type": "string" + }, + "haskell.plugin.ghcide-type-lenses.globalOn": { "default": true, - "description": "Enables splice plugin (expand template haskell definitions)" + "description": "Enables ghcide-type-lenses plugin", + "scope": "resource", + "type": "boolean" }, "haskell.plugin.haddockComments.globalOn": { + "default": true, + "description": "Enables haddockComments plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.hlint.codeActionsOn": { "default": true, - "description": "Enables haddock comments plugin" + "description": "Enables hlint code actions", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.class.globalOn": { + "haskell.plugin.hlint.config.flags": { + "default": [], + "markdownDescription": "Flags used by hlint", "scope": "resource", - "type": "boolean", + "type": "array" + }, + "haskell.plugin.hlint.diagnosticsOn": { "default": true, - "description": "Enables type class plugin" + "description": "Enables hlint diagnostics", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.rename.globalOn": { + "haskell.plugin.importLens.codeActionsOn": { + "default": true, + "description": "Enables importLens code actions", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.importLens.codeLensOn": { "default": true, - "description": "Enables rename plugin" + "description": "Enables importLens code lenses", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.rename.config.crossModule": { + "haskell.plugin.moduleName.globalOn": { + "default": true, + "description": "Enables moduleName plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.pragmas.codeActionsOn": { + "default": true, + "description": "Enables pragmas code actions", + "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.pragmas.completionOn": { + "default": true, + "description": "Enables pragmas completions", + "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.qualifyImportedNames.globalOn": { + "default": true, + "description": "Enables qualifyImportedNames plugin", + "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.refineImports.codeActionsOn": { + "default": true, + "description": "Enables refineImports code actions", + "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.refineImports.codeLensOn": { + "default": true, + "description": "Enables refineImports code lenses", + "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.rename.config.crossModule": { "default": false, - "description": "Enables renaming across modules (experimental)" + "markdownDescription": "Enable experimental cross-module renaming", + "scope": "resource", + "type": "boolean" + }, + "haskell.plugin.rename.globalOn": { + "default": true, + "description": "Enables rename plugin", + "scope": "resource", + "type": "boolean" }, "haskell.plugin.retrie.globalOn": { + "default": true, + "description": "Enables retrie plugin", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.splice.globalOn": { "default": true, - "description": "Enables retrie plugin" + "description": "Enables splice plugin", + "scope": "resource", + "type": "boolean" }, - "haskell.plugin.tactics.globalOn": { + "haskell.plugin.tactics.codeActionsOn": { + "default": true, + "description": "Enables tactics code actions", "scope": "resource", - "type": "boolean", + "type": "boolean" + }, + "haskell.plugin.tactics.codeLensOn": { "default": true, - "description": "Enables Wingman (tactics) plugin" + "description": "Enables tactics code lenses", + "scope": "resource", + "type": "boolean" }, "haskell.plugin.tactics.config.auto_gas": { + "default": 4, "markdownDescription": "The depth of the search tree when performing \"Attempt to fill hole\". Bigger values will be able to derive more solutions, but will take exponentially more time.", "scope": "resource", - "default": 4, "type": "integer" }, "haskell.plugin.tactics.config.hole_severity": { + "default": null, + "description": "The severity to use when showing hole diagnostics. These are noisy, but some editors don't allow jumping to all severities.", + "enum": [ + 1, + 2, + 3, + 4, + null + ], "enumDescriptions": [ "error", "warning", @@ -318,87 +457,31 @@ "none" ], "scope": "resource", - "description": "The severity to use when showing hole diagnostics.", - "enum": [ - 1, - 2, - 3, - 4, - null - ], - "default": null, - "type": "integer" + "type": "string" }, "haskell.plugin.tactics.config.max_use_ctor_actions": { - "title": "Max number of constructors", - "scope": "resource", - "type": "integer", "default": 5, - "markdownDescription": "Maximum number of `Use constructor ` code actions that can appear" - }, - "haskell.plugin.tactics.config.timeout_duration": { - "markdownDescription": "The timeout for Wingman actions, in seconds", + "markdownDescription": "Maximum number of `Use constructor ` code actions that can appear", "scope": "resource", - "default": 2, "type": "integer" }, "haskell.plugin.tactics.config.proofstate_styling": { + "default": true, "markdownDescription": "Should Wingman emit styling markup when showing metaprogram proof states?", "scope": "resource", - "default": true, "type": "boolean" }, - "haskell.plugin.pragmas.codeActionsOn": { + "haskell.plugin.tactics.config.timeout_duration": { + "default": 2, + "markdownDescription": "The timeout for Wingman actions, in seconds", "scope": "resource", - "type": "boolean", - "default": true, - "description": "Enables pragmas code actions" + "type": "integer" }, - "haskell.plugin.pragmas.completionOn": { - "scope": "resource", - "type": "boolean", + "haskell.plugin.tactics.hoverOn": { "default": true, - "description": "Enables pragmas completions" - }, - "haskell.plugin.ghcide-completions.config.autoExtendOn": { - "markdownDescription": "Extends the import list automatically when completing a out-of-scope identifier", + "description": "Enables tactics hover", "scope": "resource", - "default": true, "type": "boolean" - }, - "haskell.plugin.ghcide-completions.config.snippetsOn": { - "markdownDescription": "Inserts snippets when using code completions", - "scope": "resource", - "default": true, - "type": "boolean" - }, - "haskell.plugin.ghcide-type-lenses.globalOn": { - "scope": "resource", - "type": "boolean", - "default": true, - "description": "Enables type lenses plugin" - }, - "haskell.plugin.ghcide-type-lenses.config.mode": { - "scope": "resource", - "type": "string", - "default": true, - "description": "Control how type lenses are shown", - "enum": [ - "always", - "exported", - "diagnostics" - ], - "enumDescriptions": [ - "Always displays type lenses of global bindings", - "Only display type lenses of exported global bindings", - "Follows error messages produced by GHC about missing signatures" - ] - }, - "haskell.plugin.refineImports.globalOn": { - "scope": "resource", - "type": "boolean", - "default": true, - "description": "Enables refine imports plugin" } } },