ionide / ionide-vscode-fsharp

VS Code plugin for F# development
http://ionide.io
MIT License
849 stars 276 forks source link

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

Open 64J0 opened 7 months ago

64J0 commented 7 months ago

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

Additional context

Add any other context about the problem here.

MangelMaxime commented 7 months ago

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.

baronfel commented 7 months ago

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

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

TheAngryByrd commented 7 months ago

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