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

Keep nonexistent solution selections from watching unrelated parent directories

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

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

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

Research direction

Start by locating the native watcher registration and the root-resolution helper; the issue names no source files, but it describes the failing regression as missing_selected_solution_does_not_watch_or_refresh_for_its_unrelated_parent. Trace watcher registration for a nonexistent selected solution and keep root resolution available for project filters and atomic saves. Done means the regression passes and existing directories, projects, and solutions remain monitored.

Written by the indexing model from the issue text.

Description

Selecting a nonexistent solution starts a recursive native watcher on its parent directory. This broadens the selected diagnostic scope and can fail the selection because of unrelated permission errors.

The full Linux run reproduces the permission failure when sharplsp/loadSolution selects absent /tmp/test.sln: watcher registration traverses /tmp and reaches a protected systemd-private directory. This is separate from the earlier invalid temporary-filesystem/socket setup; it still fails with a native Linux temporary directory.

A deterministic real native Windows regression also reproduces the scope bug without changing permissions:

  1. Create and restore a real F# project and initialize a modern diagnostic client with both semantic engines disabled.
  2. Select an absent DoesNotExist.sln beside the project and confirm the existing asynchronous success acknowledgement.
  3. Drain earlier notifications, edit a genuine F# source and independently compile it with the actual SDK to confirm FS0001.
  4. Observe an unexpected workspace/diagnostic/refresh from the unrelated parent directory.

Expected: nonexistent selected targets do not register native watchers on their parents. Existing directories, projects and solutions continue to be monitored. The pure root-resolution helper must still support project-filter resolution and atomic saves; target existence should only gate watcher registration.

Regression: missing_selected_solution_does_not_watch_or_refresh_for_its_unrelated_parent fails specifically on the unrelated diagnostic refresh, after its real project and compiler-oracle assertions pass.

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

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.