Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

project: Allow running multiple instances of a single language server within a single worktree #22182

Merged
merged 110 commits into from
Jan 22, 2025

Conversation

osiewicz
Copy link
Contributor

This PR introduces a new entity called Project Tree which is responsible for finding subprojects within a worktree;
a subproject is a language-specific subset of a worktree which should be accurately tracked on the language server side. We'll have an ability to set multiple disjoint workspaceFolders on language server side OR spawn multiple instances of a single language server (which will be the case with e.g. Python language servers, as they need to interact with multiple disjoint virtual environments).
Project Tree assumes that projects of the same LspAdapter kind cannot overlap. Additionally project nesting is not allowed within the scope of a single LspAdapter.

Closes #5108

Release Notes:

  • Language servers now track their working directory more accurately.

@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Dec 18, 2024
osiewicz added a commit that referenced this pull request Jan 21, 2025
…ymbol fallbacks

This unblocks work on #22182; a single language server might actually be required by multiple languages (think of e.g. C/C++), in which case it doesn't make sense to use a single grammar. We already use primary language of a buffer for highlights and this PR makes this the only supported syntax highlighting flavour for returned symbols.
osiewicz added a commit that referenced this pull request Jan 21, 2025
…ymbol highlighting (#23401)

This unblocks work on #22182; a single language server might actually be
required by multiple languages (think of e.g. C/C++,
Javascript/Typescript), in which case it doesn't make sense to use a
single grammar. We already use primary language of a buffer for
highlights and this PR makes this the only supported syntax highlighting
flavour for returned symbols.

Closes #ISSUE

Release Notes:

- N/A
@osiewicz osiewicz merged commit bed917b into main Jan 22, 2025
12 checks passed
@osiewicz osiewicz deleted the lsp-tree branch January 22, 2025 16:31
notpeter pushed a commit that referenced this pull request Jan 22, 2025
…e server within a single worktree" (#23472)

Reverts #22182
I've merged the build too soon as I wanted it to be excluded from todays
Preview.
@osiewicz osiewicz restored the lsp-tree branch January 22, 2025 16:45
osiewicz added a commit that referenced this pull request Jan 22, 2025
… within a single worktree (#23473)

This PR introduces a new entity called Project Tree which is responsible
for finding subprojects within a worktree;
a subproject is a language-specific subset of a worktree which should be
accurately tracked on the language server side. We'll have an ability to
set multiple disjoint workspaceFolders on language server side OR spawn
multiple instances of a single language server (which will be the case
with e.g. Python language servers, as they need to interact with
multiple disjoint virtual environments).
Project Tree assumes that projects of the same LspAdapter kind cannot
overlap. Additionally project nesting is not allowed within the scope of
a single LspAdapter.

Closes #5108
Re-lands #22182 which I had to revert due to merging it into todays
Preview.

Release Notes:

- Language servers now track their working directory more accurately.

---------

Co-authored-by: João <[email protected]>
@osiewicz osiewicz deleted the lsp-tree branch January 22, 2025 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla-signed The user has signed the Contributor License Agreement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rust Analyzer doesn't work with multiple subprojects
1 participant