Skip to content

Missing Code actions and code lenses (Haskell) #3005

@0rphee

Description

@0rphee

Summary

Many code actions, and code lenses are not available compared to other text editors.
In this gist two functions with multiple code actions available in Kakoune and VS Code can't be done in Helix.

This issue might refer to the same problem as #2994

In the videos below I show the behavior in helix compared to 1. Kakoune, 2. VS Code.

HLS Code actions (apply hlint fixes)
Helix (left) - Kakoune (right)

code-actions.mov

HLS Code lens (add type signature)
Helix (left) - Kakoune (right)

code-lenses.mov

HLS Code lens and Code actions in VS Code

vscode.mov

Reproduction Steps

  1. Download the gist
  2. Select the whole line of the first function, type <space> + a. Only some actions will be available but not all. Try with each token there.
  3. Try the same with the other function.

Helix log

~/.cache/helix/helix.log
2022-07-07T19:48:23.132 helix_lsp::transport [ERROR] err <- "No 'hie.yaml' found. Try to discover the project type!\n"
2022-07-07T19:48:23.137 helix_lsp::transport [ERROR] err <- "Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 1.7.0.0 aarch64 ghc-9.2.2\n"
2022-07-07T19:48:23.137 helix_lsp::transport [ERROR] err <- "Current directory: /Users/roger/Documents/Dev/Haskell-Projects/Haskell-Programming-From-First-Principles/ch22\n"
2022-07-07T19:48:23.137 helix_lsp::transport [ERROR] err <- "Operating system: darwin\n"
2022-07-07T19:48:23.137 helix_lsp::transport [ERROR] err <- "Arguments: [\"--lsp\"]\n"
2022-07-07T19:48:23.137 helix_lsp::transport [ERROR] err <- "Cradle directory: /Users/roger/Documents/Dev/Haskell-Projects/Haskell-Programming-From-First-Principles/ch22\n"
2022-07-07T19:48:23.138 helix_lsp::transport [ERROR] err <- "Cradle type: Default\n"
2022-07-07T19:48:23.294 helix_lsp::transport [ERROR] err <- "\n"
2022-07-07T19:48:23.294 helix_lsp::transport [ERROR] err <- "Tool versions found on the $PATH\n"
2022-07-07T19:48:23.295 helix_lsp::transport [ERROR] err <- "cabal:\t\t3.6.2.0\n"
2022-07-07T19:48:23.296 helix_lsp::transport [ERROR] err <- "stack:\t\t2.7.5\n"
2022-07-07T19:48:23.296 helix_lsp::transport [ERROR] err <- "ghc:\t\t8.10.7\n"
2022-07-07T19:48:23.296 helix_lsp::transport [ERROR] err <- "\n"
2022-07-07T19:48:23.296 helix_lsp::transport [ERROR] err <- "\n"
2022-07-07T19:48:23.296 helix_lsp::transport [ERROR] err <- "Consulting the cradle to get project GHC version...\n"
2022-07-07T19:48:23.337 helix_lsp::transport [ERROR] err <- "Project GHC version: 8.10.7\n"
2022-07-07T19:48:23.337 helix_lsp::transport [ERROR] err <- "haskell-language-server exe candidates: [\"haskell-language-server-8.10.7\",\"haskell-language-server\"]\n"
2022-07-07T19:48:23.338 helix_lsp::transport [ERROR] err <- "Launching haskell-language-server exe at:/Users/roger/.ghcup/bin/haskell-language-server-8.10.7\n"
2022-07-07T19:48:25.301 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.301493Z | Info | No log file specified; using stderr.\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.301745Z | Info | haskell-language-server version: 1.7.0.0 (GHC: 8.10.7) (PATH: /Users/roger/.ghcup/hls/1.7.0.0/lib/haskell-language-server-1.7.0.0/bin/haskell-language-server-8.10.7)\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.302120Z | Info | Directory: /Users/roger/Documents/Dev/Haskell-Projects/Haskell-Programming-From-First-Principles/ch22\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.302325Z | Info | Starting (haskell-language-server) LSP server...\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "  GhcideArguments {argsCommand = LSP, argsCwd = Nothing, argsShakeProfiling = Nothing, argsTesting = False, argsExamplePlugin = False, argsDebugOn = False, argsLogFile = Nothing, argsThreads = 0, argsProjectGhcVersion = False}\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "  PluginIds: [ pragmas\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "             , floskell\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "             , fourmolu\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "             , tactics\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "             , ormolu\n"
2022-07-07T19:48:25.302 helix_lsp::transport [ERROR] err <- "             , stylish-haskell\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , rename\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , retrie\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , brittany\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , callHierarchy\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , class\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , haddockComments\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , eval\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , importLens\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , qualifyImportedNames\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , refineImports\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , moduleName\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , hlint\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , splice\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , alternateNumberFormat\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , selectionRange\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , changeTypeSignature\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-hover-and-symbols\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-code-actions-imports-exports\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-code-actions-type-signatures\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-code-actions-bindings\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-code-actions-fill-holes\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-completions\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-type-lenses\n"
2022-07-07T19:48:25.303 helix_lsp::transport [ERROR] err <- "             , ghcide-core\n"
2022-07-07T19:48:25.304 helix_lsp::transport [ERROR] err <- "             , LSPRecorderCallback ]\n"
2022-07-07T19:48:25.304 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.304040Z | Info | Logging heap statistics every 60.00s\n"
2022-07-07T19:48:25.348 helix_lsp::transport [ERROR] err <- " 2022-07-08T00:48:25.348748Z | Info | Staring LSP server...\n"
2022-07-07T19:48:25.349 helix_lsp::transport [ERROR] err <- "If you are seeing this in a terminal, you probably should have run WITHOUT the --lsp option!\n"
2022-07-07T19:48:25.349 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.349686Z | Info | Started LSP server in 0.00s\n"
2022-07-07T19:48:25.403 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.401452Z | Info | Registering IDE configuration: IdeConfiguration {workspaceFolders = fromList [NormalizedUri 6042087041491829206 \"file:///Users/roger/Documents/Dev/Haskell-Projects/Haskell-Programming-From-First-Principles\"], clientSettings = hashed Nothing}\n"
2022-07-07T19:48:25.405 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.405412Z | Info | Cradle path: ch22/ch22.hs\n"
2022-07-07T19:48:25.405 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.405499Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for ch22/ch22.hs.\n"
2022-07-07T19:48:25.405 helix_lsp::transport [ERROR] err <- "Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).\n"
2022-07-07T19:48:25.405 helix_lsp::transport [ERROR] err <- "You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.\n"
2022-07-07T19:48:25.523 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.518586Z | Info | Interface files cache directory: /Users/roger/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda\n"
2022-07-07T19:48:25.523 helix_lsp::transport [ERROR] err <- "2022-07-08T00:48:25.523667Z | Info | Making new HscEnv. In-place unit ids: [main]\n"
2022-07-07T19:49:03.128 helix_lsp::transport [ERROR] err <- "2022-07-08T00:49:03.127787Z | Info | Reactor thread stopped\n"

Platform

macOS

Terminal Emulator

iTerm2 Build 3.4.16

Helix Version

helix 22.05 (27609f5)

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-language-serverArea: Language server clientC-bugCategory: This is a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions