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

Fix TextDocument synchronization for LSP3 #199

Merged
merged 1 commit into from
Jan 15, 2020

Conversation

NTaylorMullen
Copy link
Contributor

  • For LSP3 clients the TextDocumentSynchronization kind is always set to none without this. For the VS LSP client this results in language servers never getting any text document synchronization events.

- For LSP3 clients the TextDocumentSynchronization kind is always set to none without this. For the VS LSP client this results in language servers never getting any text document synchronization events.
@NTaylorMullen
Copy link
Contributor Author

I'm not sure if this is the "right" change but it seems odd that for LSP3 scenarios the sync kind is always set to none

NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 13, 2020
- Included the LanguageServer core dlls as part of the VSIX install. To do this I had to expose the language server's output path via a target and then dynamically include its outputs in the VSIX output.
- Given how VSIX's are built I could not privately reference our language server to ensure that it's built when the VSIX is built. To work around this limitation I added a `_BuildLanguageServer` target that calls MSBuild directly on the language server as part of build.
- For now I'm dynamically booting the currently built language server that's deployed with the extension. I haven't given a lot of thought to what flavor of OS (x64 vs. x86) the server can run on; or if we need to ensure dotnet.exe is available.
- Found that the VS LSP client and the O# language server library that we use don't inter-operate as we'd expect. The server ends up telling the client that it doesn't care about text document change events (we do). I've created a separate PR in O# to fix this: OmniSharp/csharp-language-server-protocol#199

dotnet/aspnetcore#17789
NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 13, 2020
- Consuming several quality of life changes from O#. Such as support multiple languages in file paths.
- This also prepares us to take the TextDocumentSynchronization fixes started here: OmniSharp/csharp-language-server-protocol#199
NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 13, 2020
- Consuming several quality of life changes from O#. Such as support multiple languages in file paths.
- This also prepares us to take the TextDocumentSynchronization fixes started here: OmniSharp/csharp-language-server-protocol#199
NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 14, 2020
- Consuming several quality of life changes from O#. Such as support multiple languages in file paths.
- This also prepares us to take the TextDocumentSynchronization fixes started here: OmniSharp/csharp-language-server-protocol#199
NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 14, 2020
- Included the LanguageServer core dlls as part of the VSIX install. To do this I had to expose the language server's output path via a target and then dynamically include its outputs in the VSIX output.
- Given how VSIX's are built I could not privately reference our language server to ensure that it's built when the VSIX is built. To work around this limitation I added a `_BuildLanguageServer` target that calls MSBuild directly on the language server as part of build.
- For now I'm dynamically booting the currently built language server that's deployed with the extension. I haven't given a lot of thought to what flavor of OS (x64 vs. x86) the server can run on; or if we need to ensure dotnet.exe is available.
- Found that the VS LSP client and the O# language server library that we use don't inter-operate as we'd expect. The server ends up telling the client that it doesn't care about text document change events (we do). I've created a separate PR in O# to fix this: OmniSharp/csharp-language-server-protocol#199
- Add OmniSharp 3rd party library to signing information for VSIX insertions.


dotnet/aspnetcore#17789
NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 14, 2020
- Included the LanguageServer core dlls as part of the VSIX install. To do this I had to expose the language server's output path via a target and then dynamically include its outputs in the VSIX output.
- Given how VSIX's are built I could not privately reference our language server to ensure that it's built when the VSIX is built. To work around this limitation I added a `_BuildLanguageServer` target that calls MSBuild directly on the language server as part of build.
- For now I'm dynamically booting the currently built language server that's deployed with the extension. I haven't given a lot of thought to what flavor of OS (x64 vs. x86) the server can run on; or if we need to ensure dotnet.exe is available.
- Found that the VS LSP client and the O# language server library that we use don't inter-operate as we'd expect. The server ends up telling the client that it doesn't care about text document change events (we do). I've created a separate PR in O# to fix this: OmniSharp/csharp-language-server-protocol#199
- Add OmniSharp 3rd party library to signing information for VSIX insertions.


dotnet/aspnetcore#17789
NTaylorMullen added a commit to dotnet/razor that referenced this pull request Jan 14, 2020
- Included the LanguageServer core dlls as part of the VSIX install. To do this I had to expose the language server's output path via a target and then dynamically include its outputs in the VSIX output.
- Given how VSIX's are built I could not privately reference our language server to ensure that it's built when the VSIX is built. To work around this limitation I added a `_BuildLanguageServer` target that calls MSBuild directly on the language server as part of build.
- For now I'm dynamically booting the currently built language server that's deployed with the extension. I haven't given a lot of thought to what flavor of OS (x64 vs. x86) the server can run on; or if we need to ensure dotnet.exe is available.
- Found that the VS LSP client and the O# language server library that we use don't inter-operate as we'd expect. The server ends up telling the client that it doesn't care about text document change events (we do). I've created a separate PR in O# to fix this: OmniSharp/csharp-language-server-protocol#199
- Add OmniSharp 3rd party library to signing information for VSIX insertions.


dotnet/aspnetcore#17789
@NTaylorMullen
Copy link
Contributor Author

@david-driscoll this seems like a pretty bad one. What're your thoughts? To me it seems like VSCode ignores that "None" entirely

@ToddGrun
Copy link

I just hit this issue today too. Would love to see this one fixed.

@david-driscoll
Copy link
Member

So I think the original assumption (as to why this is like this) was related to static vs dynamic handlers and how the protocol handled those. I think this should be a workable solution to handle the static case.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants