Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

F# workspace symbol search classifies function bindings as fields

Open
#436 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
1-2 days
Newbie friendliness
55/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript
Domain
devtools

Research direction

Start by locating the F# workspace symbol search implementation and the native LSP integration test described in the issue. Trace how FCS navigation glyphs become symbol kinds and inspect how the binding AST is available for parameterized and lambda-valued bindings. Done means the test reports functions as Function, preserves ordinary values as Field, and the existing symbol-search cases still pass.

Written by the indexing model from the issue text.

Description

Standard LSP workspace symbol search reports an F# function such as let add (a: int) (b: int) = a + b as SymbolKind.Field (8), rather than Function (12).

FCS navigation supplies a field glyph for these bindings. Mapping the glyph directly loses the distinction between functions and ordinary values. The fix uses the FCS binding AST for parameterized and lambda-valued bindings, while preserving value field kinds and existing namespace/module handling.

Reproduced by a failing native LSP integration test against a real .fsproj with C# disabled. The same test covers F# function/value kinds, C# delegates, case-insensitive search, unsupported plain text, and removing search entries on document close. All 457 existing F# sidecar tests pass unchanged.

Implements [SE-FSHARP-SYMBOLS] and [SHARPLSP-FEATURES-NAVIGATION].

Dominant language
TypeScript
Stars
168
Forks
9
Avg merge
2h 49m
Merged PRs (30d)
60

Getting set up

Open in Codespaces

Starts the project's dev container in your browser, under your own GitHub account.

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Nimblesite/SharpLsp

All issues in Nimblesite/SharpLsp

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.