ionide-vscode-fsharp icon indicating copy to clipboard operation
ionide-vscode-fsharp copied to clipboard

Search for function definition redirects to signature file (`.fsi`) instead of implementation

Open 64J0 opened this issue 7 months ago • 3 comments

Describe the bug

In VSCode, when I have both the signature and implementation files for the same functions and I want to go for the function implementation, it redirects me to the signature instead. It would be very nice if this behavior could be customized to redirect to the implementation instead (maybe some switch on the extension configurations).

Steps to reproduce

  1. Create both signature (.fsi) and implementation (.fs) files for some function;
  2. Call the function in another implementation file. Hover over the function name and hit Ctrl + Mouse left click (to redirect to the function implementation);
  3. Notice that you'll be redirected to the signature file instead of the implementation.

Link to sample reproduction

Expected behaviour

Redirect to the implementation instead of the signature.

If you're going to keep the redirect to the signature by default, it would be nice to have some configuration in the extension settings to allow it to redirect to the implementation instead of signature.

Screenshots

Machine info

  • OS: Linux
  • .NET SDK version: 7.0.401
  • Ionide version: 7.16.1

Additional context

Add any other context about the problem here.

64J0 avatar Dec 05 '23 17:12 64J0

Some languages like TypeScript are able to provide a choice when there are several candidates:

CleanShot 2023-12-05 at 20 22 08@2x

I wonder if we should do something similar, it could also make it easier to navigate between signature and implementation files in general.

MangelMaxime avatar Dec 05 '23 19:12 MangelMaxime

Yeah - we have several gaps in navigation/references/etc with regards to separating implementation, declaration, and definition. A lot of this should come down to locating and returning different locations for

  • textdocument/declaration
  • textdocument/definition
  • textdocument/implementation

but we'd need to do that and see how far that gets us in covering the UX gaps.

baronfel avatar Dec 05 '23 19:12 baronfel

I started some of that work in https://github.com/fsharp/FsAutoComplete/pull/1111

TheAngryByrd avatar Dec 05 '23 19:12 TheAngryByrd