Skip to content

Tactics plugin not available in coc.nvim #495

@maksbotan

Description

@maksbotan

Subject of the issue

Describe your issue here.

Your environment

  • Output of haskell-language-server --probe-tools or haskell-language-server-wrapper --probe-tools
$ haskell-language-server-8.8.4 --probe-tools
haskell-language-server version: 0.5.1.0 (GHC: 8.8.4) (PATH: /Users/maksbotan/.local/bin/haskell-language-server-8.8.4) (GIT hash: e3fe0e7546aa91e44cc56cfe8ec078a026cf533a)
Tool versions found on the $PATH
cabal:		3.2.0.0
stack:		2.3.3
ghc:		8.8.4
  • Which lsp-client do you use
    • Neovim v0.5.0-d198aa511
    • coc-nvim 0.0.79-6fc00f1a28
  • Describe your project (alternative: link to the project)
    One file:
module Foo where

fromRight :: b -> Either a b -> b
fromRight def eab = _
  • Contents of hie.yaml: none (using implicit-hie)

Steps to reproduce

Point cursor at _ and ask for quickfix actions.

Expected behaviour

I expect tactics action to show up, like they do in VS Code with the same HLS binary:
image

Actual behaviour

There are no tactics actions:

image

Include debug information

Execute in the root of your project the command haskell-language-server --debug . and paste the logs here:

Debug output:
haskell-language-server version: 0.5.1.0 (GHC: 8.8.4) (PATH: /Users/maksbotan/.local/bin/haskell-language-server-8.8.4) (GIT hash: e3fe0e7546aa91e44cc56cfe8ec078a026cf533a)
(haskell-language-server)Ghcide setup tester in /Users/maksbotan/hlscheck.
Report bugs at https://github.com/haskell/haskell-language-server/issues

Tool versions found on the $PATH
cabal:		3.2.0.0
stack:		2.3.3
ghc:		8.8.4


Step 1/4: Finding files to test in /Users/maksbotan/hlscheck
Found 1 files

Step 2/4: Looking for hie.yaml files that control setup
Found 1 cradle

Step 3/4: Initializing the IDE

Step 4/4: Type checking the files
[INFO] Consulting the cradle for "foo.hs"
NotShowMessage (NotificationMessage {_jsonrpc = "2.0", _method = WindowShowMessage, _params = ShowMessageParams {_xtype = MtWarning, _message = "No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for foo.hs.\n Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie)"}})
Output from setting up the cradle Cradle {cradleRootDir = "/Users/maksbotan/hlscheck", cradleOptsProg = CradleAction: Default}
[INFO] Using interface files cache dir: /Users/maksbotan/.cache/ghcide/main-da39a3ee5e6b4b0d3255bfef95601890afd80709
[INFO] Making new HscEnv[main]
File:     /Users/maksbotan/hlscheck/foo.hs
Hidden:   no
Range:    4:10-4:13
Source:   typecheck
Severity: DsInfo
Message:  Defined but not used: ‘def’
File:     /Users/maksbotan/hlscheck/foo.hs
Hidden:   no
Range:    4:14-4:17
Source:   typecheck
Severity: DsInfo
Message:  Defined but not used: ‘eab’
File:     /Users/maksbotan/hlscheck/foo.hs
Hidden:   no
Range:    4:20-4:21
Source:   typecheck
Severity: DsError
Message: 
  • Found hole: _ :: b
  Where: ‘b’ is a rigid type variable bound by
  the type signature for:
  fromRight :: forall b a. b -> Either a b -> b
  at /Users/maksbotan/hlscheck/foo.hs:3:1-33
  • In the expression: _
  In an equation for ‘fromRight’: fromRight def eab = _
  • Relevant bindings include
  eab :: Either a b (bound at /Users/maksbotan/hlscheck/foo.hs:4:15)
  def :: b (bound at /Users/maksbotan/hlscheck/foo.hs:4:11)
  fromRight :: b -> Either a b -> b
  (bound at /Users/maksbotan/hlscheck/foo.hs:4:1)
  Valid hole fits include def
  Valid refinement hole fits include
  id _
  head _
  last _

Completed (1 file worked, 0 files failed)

In --debug logs from HLS started by coc-nvim I see this:

2020-10-13 10:59:07.748594 [ThreadId 5] - ---> {"jsonrpc":"2.0","id":3,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///Users/maksbotan/hlscheck/foo.hs"},"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":21}},"context":{"diagnostics":[{"severity":3,"range":{"start":{"line":3,"character":10},"end":{"line":3,"character":13}},"source":"typecheck","message":"Defined but not used: ‘def’","tags":[1]},{"severity":3,"range":{"start":{"line":3,"character":14},"end":{"line":3,"character":17}},"source":"typecheck","message":"Defined but not used: ‘eab’","tags":[1]},{"severity":1,"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"source":"typecheck","message":"• Found hole: _ :: b\n  Where: ‘b’ is a rigid type variable bound by\n           the type signature for:\n             fromRight :: forall b a. b -> Either a b -> b\n           at /Users/maksbotan/hlscheck/foo.hs:3:1-33\n• In the expression: _\n  In an equation for ‘fromRight’: fromRight def eab = _\n• Relevant bindings include\n    eab :: Either a b (bound at /Users/maksbotan/hlscheck/foo.hs:4:15)\n    def :: b (bound at /Users/maksbotan/hlscheck/foo.hs:4:11)\n    fromRight :: b -> Either a b -> b\n      (bound at /Users/maksbotan/hlscheck/foo.hs:4:1)\n  Valid hole fits include def\n  Valid refinement hole fits include\n    id _\n    head _\n    last _"}]}}}
2020-10-13 10:59:07.750462 [ThreadId 186] - finish: CodeAction (took 0.00s)
2020-10-13 10:59:08.570906 [ThreadId 192] - finish: CodeAction:PackageExports (took 0.82s)
2020-10-13 10:59:08.571188 [ThreadId 193] - finish: importLens (took 0.00s)
2020-10-13 10:59:08.571827 [ThreadId 195] - finish: retrie (took 0.00s)
2020-10-13 10:59:08.571921 [ThreadId 197] - finish: tactic (took 0.00s)
2020-10-13 10:59:08.572159 [ThreadId 202] - finish: tactic (took 0.00s)
2020-10-13 10:59:08.572292 [ThreadId 203] - finish: tactic (took 0.00s)
2020-10-13 10:59:08.588989 [ThreadId 7] - <--2--{"result":[{"edit":{"changes":{"file:///Users/maksbotan/hlscheck/foo.hs":[{"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"newText":"def"}]}},"kind":"quickfix","diagnostics":[{"severity":1,"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"source":"typecheck","message":"• Found hole: _ :: b\n  Where: ‘b’ is a rigid type variable bound by\n           the type signature for:\n             fromRight :: forall b a. b -> Either a b -> b\n           at /Users/maksbotan/hlscheck/foo.hs:3:1-33\n• In the expression: _\n  In an equation for ‘fromRight’: fromRight def eab = _\n• Relevant bindings include\n    eab :: Either a b (bound at /Users/maksbotan/hlscheck/foo.hs:4:15)\n    def :: b (bound at /Users/maksbotan/hlscheck/foo.hs:4:11)\n    fromRight :: b -> Either a b -> b\n      (bound at /Users/maksbotan/hlscheck/foo.hs:4:1)\n  Valid hole fits include def\n  Valid refinement hole fits include\n    id _\n    head _\n    last _"}],"title":"replace _ with def"},{"edit":{"changes":{"file:///Users/maksbotan/hlscheck/foo.hs":[{"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"newText":"(id _)"}]}},"kind":"quickfix","diagnostics":[{"severity":1,"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"source":"typecheck","message":"• Found hole: _ :: b\n  Where: ‘b’ is a rigid type variable bound by\n           the type signature for:\n             fromRight :: forall b a. b -> Either a b -> b\n           at /Users/maksbotan/hlscheck/foo.hs:3:1-33\n• In the expression: _\n  In an equation for ‘fromRight’: fromRight def eab = _\n• Relevant bindings include\n    eab :: Either a b (bound at /Users/maksbotan/hlscheck/foo.hs:4:15)\n    def :: b (bound at /Users/maksbotan/hlscheck/foo.hs:4:11)\n    fromRight :: b -> Either a b -> b\n      (bound at /Users/maksbotan/hlscheck/foo.hs:4:1)\n  Valid hole fits include def\n  Valid refinement hole fits include\n    id _\n    head _\n    last _"}],"title":"replace _ with id _"},{"edit":{"changes":{"file:///Users/maksbotan/hlscheck/foo.hs":[{"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"newText":"(head _)"}]}},"kind":"quickfix","diagnostics":[{"severity":1,"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"source":"typecheck","message":"• Found hole: _ :: b\n  Where: ‘b’ is a rigid type variable bound by\n           the type signature for:\n             fromRight :: forall b a. b -> Either a b -> b\n           at /Users/maksbotan/hlscheck/foo.hs:3:1-33\n• In the expression: _\n  In an equation for ‘fromRight’: fromRight def eab = _\n• Relevant bindings include\n    eab :: Either a b (bound at /Users/maksbotan/hlscheck/foo.hs:4:15)\n    def :: b (bound at /Users/maksbotan/hlscheck/foo.hs:4:11)\n    fromRight :: b -> Either a b -> b\n      (bound at /Users/maksbotan/hlscheck/foo.hs:4:1)\n  Valid hole fits include def\n  Valid refinement hole fits include\n    id _\n    head _\n    last _"}],"title":"replace _ with head _"},{"edit":{"changes":{"file:///Users/maksbotan/hlscheck/foo.hs":[{"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"newText":"(last _)"}]}},"kind":"quickfix","diagnostics":[{"severity":1,"range":{"start":{"line":3,"character":20},"end":{"line":3,"character":21}},"source":"typecheck","message":"• Found hole: _ :: b\n  Where: ‘b’ is a rigid type variable bound by\n           the type signature for:\n             fromRight :: forall b a. b -> Either a b -> b\n           at /Users/maksbotan/hlscheck/foo.hs:3:1-33\n• In the expression: _\n  In an equation for ‘fromRight’: fromRight def eab = _\n• Relevant bindings include\n    eab :: Either a b (bound at /Users/maksbotan/hlscheck/foo.hs:4:15)\n    def :: b (bound at /Users/maksbotan/hlscheck/foo.hs:4:11)\n    fromRight :: b -> Either a b -> b\n      (bound at /Users/maksbotan/hlscheck/foo.hs:4:1)\n  Valid hole fits include def\n  Valid refinement hole fits include\n    id _\n    head _\n    last _"}],"title":"replace _ with last _"},{"command":{"command":"55256:retrie:retrieCommand","arguments":[{"restrictToOriginatingFile":false,"rewrites":[{"tag":"Unfold","contents":"Foo.fromRight"}],"originatingFile":[-977517217863398354,"file:///Users/maksbotan/hlscheck/foo.hs"],"description":"Unfold fromRight"}],"title":"Unfold fromRight"},"kind":"refactor.inline","title":"Unfold fromRight"},{"command":{"command":"55256:retrie:retrieCommand","arguments":[{"restrictToOriginatingFile":true,"rewrites":[{"tag":"Unfold","contents":"Foo.fromRight"}],"originatingFile":[-977517217863398354,"file:///Users/maksbotan/hlscheck/foo.hs"],"description":"Unfold fromRight in current file"}],"title":"Unfold fromRight in current file"},"kind":"refactor.inline","title":"Unfold fromRight in current file"},{"command":{"command":"55256:retrie:retrieCommand","arguments":[{"restrictToOriginatingFile":false,"rewrites":[{"tag":"Fold","contents":"Foo.fromRight"}],"originatingFile":[-977517217863398354,"file:///Users/maksbotan/hlscheck/foo.hs"],"description":"Fold fromRight"}],"title":"Fold fromRight"},"kind":"refactor.extract","title":"Fold fromRight"},{"command":{"command":"55256:retrie:retrieCommand","arguments":[{"restrictToOriginatingFile":true,"rewrites":[{"tag":"Fold","contents":"Foo.fromRight"}],"originatingFile":[-977517217863398354,"file:///Users/maksbotan/hlscheck/foo.hs"],"description":"Fold fromRight in current file"}],"title":"Fold fromRight in current file"},"kind":"refactor.extract","title":"Fold fromRight in current file"}],"jsonrpc":"2.0","id":3}

I.e., it gets codeAction request and generates response, and this response does not contain tactics actions at all. Maybe coc-nvim does not advertise some feature required for the plugin to work?

For completeness, startup log:

haskell-lsp:Starting up server ...
2020-10-13 10:59:01.517415 [ThreadId 5] - ---> {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":55245,"rootPath":"/Users/maksbotan/hlscheck","rootUri":"file:///Users/maksbotan/hlscheck","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional"},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true,"versionSupport":false,"tagSupport":{"valueSet":[1,2]}},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"definition":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true,"tagSupport":{"valueSet":[1]}},"codeAction":{"dynamicRegistration":true,"isPreferredSupport":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"typeDefinition":{"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}},"window":{"workDoneProgress":true}},"initializationOptions":{},"trace":"off","workspaceFolders":[{"uri":"file:///Users/maksbotan/hlscheck","name":"hlscheck"}],"clientInfo":{"name":"coc.nvim","version":"0.0.79"},"workDoneToken":"ecdbb6dc-baad-4049-87f7-8a3a58ea01da"}}
2020-10-13 10:59:01.518584 [ThreadId 5] - haskell-lsp:initializeRequestHandler: setting current dir to project root:/Users/maksbotan/hlscheck
2020-10-13 10:59:01.519532 [ThreadId 7] - <--2--{"jsonrpc":"2.0","params":{"type":1,"message":"haskell-lsp:configuration parse error. RequestMessage {_jsonrpc = \"2.0\", _id = IdInt 0, _method = Initialize, _params = InitializeParams {_processId = Just 55245, _rootPath = Just \"/Users/maksbotan/hlscheck\", _rootUri = Just (Uri {getUri = \"file:///Users/maksbotan/hlscheck\"}), _initializationOptions = Just (Object (fromList [])), _capabilities = ClientCapabilities {_workspace = Just (WorkspaceClientCapabilities {_applyEdit = Just True, _workspaceEdit = Just (WorkspaceEditClientCapabilities {_documentChanges = Just True}), _didChangeConfiguration = Just (DidChangeConfigurationClientCapabilities {_dynamicRegistration = Just True}), _didChangeWatchedFiles = Just (DidChangeWatchedFilesClientCapabilities {_dynamicRegistration = Just True}), _symbol = Just (SymbolClientCapabilities {_dynamicRegistration = Just True, _symbolKind = Just (SymbolKindClientCapabilities {_valueSet = Just (List [SkFile,SkModule,SkNamespace,SkPackage,SkClass,SkMethod,SkProperty,SkField,SkConstructor,SkEnum,SkInterface,SkFunction,SkVariable,SkConstant,SkString,SkNumber,SkBoolean,SkArray,SkObject,SkKey,SkNull,SkEnumMember,SkStruct,SkEvent,SkOperator,SkTypeParameter])})}), _executeCommand = Just (ExecuteClientCapabilities {_dynamicRegistration = Just True}), _workspaceFolders = Just True, _configuration = Just True}), _textDocument = Just (TextDocumentClientCapabilities {_synchronization = Just (SynchronizationTextDocumentClientCapabilities {_dynamicRegistration = Just True, _willSave = Just True, _willSaveWaitUntil = Just True, _didSave = Just True}), _completion = Just (CompletionClientCapabilities {_dynamicRegistration = Just True, _completionItem = Just (CompletionItemClientCapabilities {_snippetSupport = Just True, _commitCharactersSupport = Just True, _documentationFormat = Just (List [MkMarkdown,MkPlainText]), _deprecatedSupport = Just True, _preselectSupport = Just True, _tagSupport = Nothing}), _completionItemKind = Just (CompletionItemKindClientCapabilities {_valueSet = Just (List [CiText,CiMethod,CiFunction,CiConstructor,CiField,CiVariable,CiClass,CiInterface,CiModule,CiProperty,CiUnit,CiValue,CiEnum,CiKeyword,CiSnippet,CiColor,CiFile,CiReference,CiFolder,CiEnumMember,CiConstant,CiStruct,CiEvent,CiOperator,CiTypeParameter])}), _contextSupport = Just True}), _hover = Just (HoverClientCapabilities {_dynamicRegistration = Just True, _contentFormat = Just (List [MkMarkdown,MkPlainText])}), _signatureHelp = Just (SignatureHelpClientCapabilities {_dynamicRegistration = Just True, _signatureInformation = Just (SignatureInformationClientCapabilities {documentationFormat = Nothing})}), _references = Just (ReferencesClientCapabilities {_dynamicRegistration = Just True}), _documentHighlight = Just (DocumentHighlightClientCapabilities {_dynamicRegistration = Just True}), _documentSymbol = Just (DocumentSymbolClientCapabilities {_dynamicRegistration = Just True, _symbolKind = Just (DocumentSymbolKindClientCapabilities {_valueSet = Just (List [SkFile,SkModule,SkNamespace,SkPackage,SkClass,SkMethod,SkProperty,SkField,SkConstructor,SkEnum,SkInterface,SkFunction,SkVariable,SkConstant,SkString,SkNumber,SkBoolean,SkArray,SkObject,SkKey,SkNull,SkEnumMember,SkStruct,SkEvent,SkOperator,SkTypeParameter])}), _hierarchicalDocumentSymbolSupport = Just True}), _formatting = Just (FormattingClientCapabilities {_dynamicRegistration = Just True}), _rangeFormatting = Just (RangeFormattingClientCapabilities {_dynamicRegistration = Just True}), _onTypeFormatting = Just (OnTypeFormattingClientCapabilities {_dynamicRegistration = Just True}), _definition = Just (DefinitionClientCapabilities {_dynamicRegistration = Just True}), _typeDefinition = Just (TypeDefinitionClientCapabilities {_dynamicRegistration = Just True}), _implementation = Just (ImplementationClientCapabilities {_dynamicRegistration = Just True}), _codeAction = Just (CodeActionClientCapabilities {_dynamicRegistration = Just True, _codeActionLiteralSupport = Just (CodeActionLiteralSupport {_codeActionKind = CodeActionKindClientCapabilities {_valueSet = List [CodeActionUnknown \"\",CodeActionQuickFix,CodeActionRefactor,CodeActionRefactorExtract,CodeActionRefactorInline,CodeActionRefactorRewrite,CodeActionSource,CodeActionSourceOrganizeImports]}})}), _codeLens = Just (CodeLensClientCapabilities {_dynamicRegistration = Just True}), _documentLink = Just (DocumentLinkClientCapabilities {_dynamicRegistration = Just True}), _colorProvider = Just (ColorProviderClientCapabilities {_dynamicRegistration = Just True}), _rename = Just (RenameClientCapabilities {_dynamicRegistration = Just True, _prepareSupport = Just True}), _publishDiagnostics = Just (PublishDiagnosticsClientCapabilities {_relatedInformation = Just True, _tagSupport = Just (PublishDiagnosticsTagsClientCapabilities {_valueSet = List [DtUnnecessary,DtDeprecated]})}), _foldingRange = Just (FoldingRangeClientCapabilities {_dynamicRegistration = Just True, _rangeLimit = Just 5000, _lineFoldingOnly = Just True})}), _window = Just (WindowClientCapabilities {_workDoneProgress = Just True}), _experimental = Nothing}, _trace = Just TraceOff, _workspaceFolders = Just (List [WorkspaceFolder {_uri = \"file:///Users/maksbotan/hlscheck\", _name = \"hlscheck\"}])}} \"key \\\"languageServerHaskell\\\" not found\""},"method":"window/logMessage"}
2020-10-13 10:59:01.530333 [ThreadId 29] - Registering ide configuration: IdeConfiguration {workspaceFolders = fromList [NormalizedUri 9056299084448907626 "file:///Users/maksbotan/hlscheck"], clientSettings = hashed (Just (Object (fromList [])))}
2020-10-13 10:59:01.530577 [ThreadId 7] - <--2--{"result":{"capabilities":{"typeDefinitionProvider":true,"foldingRangeProvider":false,"textDocumentSync":{"openClose":true,"change":2,"save":{}},"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}},"implementationProvider":true,"documentRangeFormattingProvider":true,"documentHighlightProvider":true,"executeCommandProvider":{"commands":["55256:eval:evalCommand","55256:ghcide:typesignature.add","55256:importLens:ImportLensCommand","55256:pragmas:addPragma","55256:retrie:retrieCommand","55256:tactic:tacticsAutoCommand","55256:tactic:tacticsIntrosCommand","55256:tactic:tacticsDestructCommand","55256:tactic:tacticsHomomorphismCommand","55256:tactic:tacticsDestructLambdaCaseCommand","55256:tactic:tacticsHomomorphismLambdaCaseCommand"]},"renameProvider":false,"colorProvider":false,"definitionProvider":true,"hoverProvider":true,"codeActionProvider":true,"completionProvider":{"triggerCharacters":["."],"resolveProvider":false},"codeLensProvider":{},"documentSymbolProvider":true,"documentFormattingProvider":true}},"jsonrpc":"2.0","id":0}
2020-10-13 10:59:01.531773 [ThreadId 5] - ---> {"jsonrpc":"2.0","method":"initialized","params":{}}
2020-10-13 10:59:01.531961 [ThreadId 7] - <--2--{"jsonrpc":"2.0","params":{"registrations":[{"registerOptions":{"watchers":[{"kind":5,"globPattern":"**/*.hs"},{"kind":5,"globPattern":"**/*.hs-boot"},{"kind":5,"globPattern":"**/*.lhs"},{"kind":5,"globPattern":"**/*.lhs-boot"}]},"method":"workspace/didChangeWatchedFiles","id":"globalFileWatches"}]},"method":"client/registerCapability","id":0}
2020-10-13 10:59:01.532396 [ThreadId 5] - ---> {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"haskell":{"formattingProvider":"stylish-haskell"}}}}
2020-10-13 10:59:01.532516 [ThreadId 29] - Configuration changed: Object (fromList [("haskell",Object (fromList [("formattingProvider",String "stylish-haskell")]))])
2020-10-13 10:59:01.532674 [ThreadId 20] - Finishing build session(exception: AsyncCancelled)
2020-10-13 10:59:01.532792 [ThreadId 29] - Restarting build session (aborting the previous one took 0.00s)

Metadata

Metadata

Assignees

No one assigned

    Labels

    can-workaroundtype: bugSomething isn't right: doesn't work as intended, documentation is missing/outdated, etc..

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions