Csharp Language Server Protocol Versions Save

Language Server Protocol in C#

v0.19.1

3 years ago

As part of this release we had 2 commits which resulted in 2 issues being closed.

bug

  • #564 Fixed a bug where nullable enum like classes could not be deserialized correctly

dependencies

  • #514 Bump XunitXml.TestLogger from 2.1.45 to 3.0.62

v0.19.0

3 years ago

As part of this release we had 76 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

TelemetryEvent Change

The property TelemetryEvent.Data has been renamed to ExtensionData and the type has been changed as well.

Execute Command Handler Base Classes Renamed

#479 added support for return types from execute command, as a part of that change the name of the helper base classes has changed from ExecuteCommandHandlerBase<> to ExecuteTypedCommandHandlerBase<>. A new set of classes named ExecuteTypedResponseCommandHandlerBase<> have also been added.

breaking changes

  • #480 Removed Porposal Attributes from everywhere
  • #464 Added AllowDerivedRequest support for lsp telemetry event
  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

feature

  • #458 Added ability to define the scheduler used for both input and output

enhancements

  • #479 Added support for open generic params and handler interfaces. Added ExecuteCommandParams<>
  • #470 Added new FileOperations and updated to work with latest annotations
  • #461 Reduce use of Assembly.GetTypes() or ExportedTypes
  • #450 OnTypeRename -> LinkedEditingRange
  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bugs

  • #510 fix gittools actions to use the latest tagged release, the master branch as been renamed to main which caused the break
  • #509 Minor updates.
  • #478 ensure facade interfaces get registered in external service collection
  • #477 ensure facade interfaces get registered in external service collection
  • #475 Fixed json name of adapterID for debug adapter protocol
  • #459 Added fixes for document color provider, as well as related fixes for other resolve features.
  • #457 Updated client registration handler to behave more like the vscode
  • #447 Fixed case where if serialization fails the server will die silently.

chores

  • #474 Correct readme path to hopefully fix #469
  • #465 Removed ConnectedCapability interface as it isn't needed any more
  • #460 make all integration tests retryable. nullability clean up

mysterious

  • #488 Fix invalid cast issue in omnisharp-roslyn by fixing LspHandlerDescriptor ctor

dependenciess

  • #534 Bump Microsoft.NET.Test.Sdk from 16.8.3 to 16.9.1
  • #533 Bump JetBrains.ReSharper.CommandLineTools from 2020.3.2 to 2020.3.3
  • #532 Bump husky from 4.3.8 to 5.1.1
  • #530 Bump ReportGenerator from 4.8.4 to 4.8.6
  • #529 Bump coverlet.collector from 3.0.2 to 3.0.3
  • #528 Bump Bogus from 33.0.1 to 33.0.2
  • #527 Bump coverlet.msbuild from 3.0.2 to 3.0.3
  • #525 Bump Serilog.Sinks.Debug from 1.0.1 to 2.0.0
  • #524 Bump peaceiris/actions-label-commenter from v1.9.0 to v1.9.1
  • #523 Bump DryIoc.Internal from 4.7.2 to 4.7.3
  • #522 Bump GitVersion.Tool from 5.6.4 to 5.6.6
  • #520 Bump gittools/actions from v0.9.8 to v0.9.9
  • #519 Bump lint-staged from 10.5.3 to 10.5.4
  • #517 Bump Bogus from 32.0.2 to 33.0.1
  • #508 Bump XunitXml.TestLogger from 2.1.26 to 2.1.45
  • #507 Updated covertlet, dryioc and nuke
  • #504 Bump GitVersion.Tool from 5.6.3 to 5.6.4
  • #503 Bump coverlet.collector from 1.3.0 to 3.0.1
  • #501 Bump coverlet.msbuild from 3.0.0 to 3.0.1
  • #500 Bump husky from 4.3.6 to 4.3.8
  • #499 Bump WyriHaximus/github-action-create-milestone from 0.1.0 to v1
  • #498 Bump Snapper from 2.2.4 to 2.3.0
  • #497 Bump coverlet.msbuild from 2.9.0 to 3.0.0
  • #496 Bump GitVersion.Tool from 5.6.1 to 5.6.3
  • #492 Bump GitVersion.Tool from 5.6.0 to 5.6.1
  • #491 Bump ReportGenerator from 4.8.2 to 4.8.4
  • #490 Bump JetBrains.ReSharper.CommandLineTools from 2020.3.0 to 2020.3.2
  • #485 Bump GitVersion.Tool from 5.5.1 to 5.6.0
  • #484 Bump peaceiris/actions-label-commenter from v1.8.2 to v1.9.0
  • #482 Bump crazy-max/ghaction-github-labeler from v3.1.0 to v3.1.1
  • #481 Bump ReportGenerator from 4.8.1 to 4.8.2
  • #476 Bump JetBrains.ReSharper.CommandLineTools from 2020.2.4 to 2020.3.0
  • #472 Bump Bogus from 32.0.1 to 32.0.2
  • #471 Bump husky from 4.3.5 to 4.3.6
  • #468 Bump DryIoc.Internal from 4.5.2 to 4.6.0
  • #466 Bump husky from 4.3.0 to 4.3.5
  • #462 Bump lint-staged from 10.5.2 to 10.5.3
  • #454 Bump Microsoft.CodeAnalysis.Analyzers from 3.3.1 to 3.3.2
  • #453 Bump DryIoc.Internal from 4.5.1 to 4.5.2
  • #452 Bump peaceiris/actions-label-commenter from v1.8.1 to v1.8.2
  • #451 Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3
  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.19.0-beta.6

3 years ago

As part of this release we had 76 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

TelemetryEvent Change

The property TelemetryEvent.Data has been renamed to ExtensionData and the type has been changed as well.

Execute Command Handler Base Classes Renamed

#479 added support for return types from execute command, as a part of that change the name of the helper base classes has changed from ExecuteCommandHandlerBase<> to ExecuteTypedCommandHandlerBase<>. A new set of classes named ExecuteTypedResponseCommandHandlerBase<> have also been added.

breaking changes

  • #480 Removed Porposal Attributes from everywhere
  • #464 Added AllowDerivedRequest support for lsp telemetry event
  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

feature

  • #458 Added ability to define the scheduler used for both input and output

enhancements

  • #479 Added support for open generic params and handler interfaces. Added ExecuteCommandParams<>
  • #470 Added new FileOperations and updated to work with latest annotations
  • #461 Reduce use of Assembly.GetTypes() or ExportedTypes
  • #450 OnTypeRename -> LinkedEditingRange
  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bugs

  • #510 fix gittools actions to use the latest tagged release, the master branch as been renamed to main which caused the break
  • #509 Minor updates.
  • #478 ensure facade interfaces get registered in external service collection
  • #477 ensure facade interfaces get registered in external service collection
  • #475 Fixed json name of adapterID for debug adapter protocol
  • #459 Added fixes for document color provider, as well as related fixes for other resolve features.
  • #457 Updated client registration handler to behave more like the vscode
  • #447 Fixed case where if serialization fails the server will die silently.

chores

  • #474 Correct readme path to hopefully fix #469
  • #465 Removed ConnectedCapability interface as it isn't needed any more
  • #460 make all integration tests retryable. nullability clean up

mysterious

  • #488 Fix invalid cast issue in omnisharp-roslyn by fixing LspHandlerDescriptor ctor

dependenciess

  • #534 Bump Microsoft.NET.Test.Sdk from 16.8.3 to 16.9.1
  • #533 Bump JetBrains.ReSharper.CommandLineTools from 2020.3.2 to 2020.3.3
  • #532 Bump husky from 4.3.8 to 5.1.1
  • #530 Bump ReportGenerator from 4.8.4 to 4.8.6
  • #529 Bump coverlet.collector from 3.0.2 to 3.0.3
  • #528 Bump Bogus from 33.0.1 to 33.0.2
  • #527 Bump coverlet.msbuild from 3.0.2 to 3.0.3
  • #525 Bump Serilog.Sinks.Debug from 1.0.1 to 2.0.0
  • #524 Bump peaceiris/actions-label-commenter from v1.9.0 to v1.9.1
  • #523 Bump DryIoc.Internal from 4.7.2 to 4.7.3
  • #522 Bump GitVersion.Tool from 5.6.4 to 5.6.6
  • #520 Bump gittools/actions from v0.9.8 to v0.9.9
  • #519 Bump lint-staged from 10.5.3 to 10.5.4
  • #517 Bump Bogus from 32.0.2 to 33.0.1
  • #508 Bump XunitXml.TestLogger from 2.1.26 to 2.1.45
  • #507 Updated covertlet, dryioc and nuke
  • #504 Bump GitVersion.Tool from 5.6.3 to 5.6.4
  • #503 Bump coverlet.collector from 1.3.0 to 3.0.1
  • #501 Bump coverlet.msbuild from 3.0.0 to 3.0.1
  • #500 Bump husky from 4.3.6 to 4.3.8
  • #499 Bump WyriHaximus/github-action-create-milestone from 0.1.0 to v1
  • #498 Bump Snapper from 2.2.4 to 2.3.0
  • #497 Bump coverlet.msbuild from 2.9.0 to 3.0.0
  • #496 Bump GitVersion.Tool from 5.6.1 to 5.6.3
  • #492 Bump GitVersion.Tool from 5.6.0 to 5.6.1
  • #491 Bump ReportGenerator from 4.8.2 to 4.8.4
  • #490 Bump JetBrains.ReSharper.CommandLineTools from 2020.3.0 to 2020.3.2
  • #485 Bump GitVersion.Tool from 5.5.1 to 5.6.0
  • #484 Bump peaceiris/actions-label-commenter from v1.8.2 to v1.9.0
  • #482 Bump crazy-max/ghaction-github-labeler from v3.1.0 to v3.1.1
  • #481 Bump ReportGenerator from 4.8.1 to 4.8.2
  • #476 Bump JetBrains.ReSharper.CommandLineTools from 2020.2.4 to 2020.3.0
  • #472 Bump Bogus from 32.0.1 to 32.0.2
  • #471 Bump husky from 4.3.5 to 4.3.6
  • #468 Bump DryIoc.Internal from 4.5.2 to 4.6.0
  • #466 Bump husky from 4.3.0 to 4.3.5
  • #462 Bump lint-staged from 10.5.2 to 10.5.3
  • #454 Bump Microsoft.CodeAnalysis.Analyzers from 3.3.1 to 3.3.2
  • #453 Bump DryIoc.Internal from 4.5.1 to 4.5.2
  • #452 Bump peaceiris/actions-label-commenter from v1.8.1 to v1.8.2
  • #451 Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3
  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.19.0-beta.5

3 years ago

As part of this release we had 62 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

TelemetryEvent Change

The property TelemetryEvent.Data has been renamed to ExtensionData and the type has been changed as well.

Execute Command Handler Base Classes Renamed

#479 added support for return types from execute command, as a part of that change the name of the helper base classes has changed from ExecuteCommandHandlerBase<> to ExecuteTypedCommandHandlerBase<>. A new set of classes named ExecuteTypedResponseCommandHandlerBase<> have also been added.

breaking changes

  • #480 Removed Porposal Attributes from everywhere
  • #464 Added AllowDerivedRequest support for lsp telemetry event
  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

feature

  • #458 Added ability to define the scheduler used for both input and output

enhancements

  • #479 Added support for open generic params and handler interfaces. Added ExecuteCommandParams<>
  • #470 Added new FileOperations and updated to work with latest annotations
  • #461 Reduce use of Assembly.GetTypes() or ExportedTypes
  • #450 OnTypeRename -> LinkedEditingRange
  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bugs

  • #510 fix gittools actions to use the latest tagged release, the master branch as been renamed to main which caused the break
  • #509 Minor updates.
  • #478 ensure facade interfaces get registered in external service collection
  • #477 ensure facade interfaces get registered in external service collection
  • #475 Fixed json name of adapterID for debug adapter protocol
  • #459 Added fixes for document color provider, as well as related fixes for other resolve features.
  • #457 Updated client registration handler to behave more like the vscode
  • #447 Fixed case where if serialization fails the server will die silently.

chores

  • #474 Correct readme path to hopefully fix #469
  • #465 Removed ConnectedCapability interface as it isn't needed any more
  • #460 make all integration tests retryable. nullability clean up

mysterious

  • #488 Fix invalid cast issue in omnisharp-roslyn by fixing LspHandlerDescriptor ctor

dependenciess

  • #508 Bump XunitXml.TestLogger from 2.1.26 to 2.1.45
  • #507 Updated covertlet, dryioc and nuke
  • #504 Bump GitVersion.Tool from 5.6.3 to 5.6.4
  • #503 Bump coverlet.collector from 1.3.0 to 3.0.1
  • #501 Bump coverlet.msbuild from 3.0.0 to 3.0.1
  • #500 Bump husky from 4.3.6 to 4.3.8
  • #499 Bump WyriHaximus/github-action-create-milestone from 0.1.0 to v1
  • #498 Bump Snapper from 2.2.4 to 2.3.0
  • #497 Bump coverlet.msbuild from 2.9.0 to 3.0.0
  • #496 Bump GitVersion.Tool from 5.6.1 to 5.6.3
  • #492 Bump GitVersion.Tool from 5.6.0 to 5.6.1
  • #491 Bump ReportGenerator from 4.8.2 to 4.8.4
  • #490 Bump JetBrains.ReSharper.CommandLineTools from 2020.3.0 to 2020.3.2
  • #485 Bump GitVersion.Tool from 5.5.1 to 5.6.0
  • #484 Bump peaceiris/actions-label-commenter from v1.8.2 to v1.9.0
  • #482 Bump crazy-max/ghaction-github-labeler from v3.1.0 to v3.1.1
  • #481 Bump ReportGenerator from 4.8.1 to 4.8.2
  • #476 Bump JetBrains.ReSharper.CommandLineTools from 2020.2.4 to 2020.3.0
  • #472 Bump Bogus from 32.0.1 to 32.0.2
  • #471 Bump husky from 4.3.5 to 4.3.6
  • #468 Bump DryIoc.Internal from 4.5.2 to 4.6.0
  • #466 Bump husky from 4.3.0 to 4.3.5
  • #462 Bump lint-staged from 10.5.2 to 10.5.3
  • #454 Bump Microsoft.CodeAnalysis.Analyzers from 3.3.1 to 3.3.2
  • #453 Bump DryIoc.Internal from 4.5.1 to 4.5.2
  • #452 Bump peaceiris/actions-label-commenter from v1.8.1 to v1.8.2
  • #451 Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3
  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.19.0-beta.4

3 years ago

As part of this release we had 42 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

TelemetryEvent Change

The property TelemetryEvent.Data has been renamed to ExtensionData and the type has been changed as well.

Execute Command Handler Base Classes Renamed

#479 added support for return types from execute command, as a part of that change the name of the helper base classes has changed from ExecuteCommandHandlerBase<> to ExecuteTypedCommandHandlerBase<>. A new set of classes named ExecuteTypedResponseCommandHandlerBase<> have also been added.

breaking changes

  • #480 Removed Porposal Attributes from everywhere
  • #464 Added AllowDerivedRequest support for lsp telemetry event
  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

feature

  • #458 Added ability to define the scheduler used for both input and output

enhancements

  • #479 Added support for open generic params and handler interfaces. Added ExecuteCommandParams<>
  • #470 Added new FileOperations and updated to work with latest annotations
  • #461 Reduce use of Assembly.GetTypes() or ExportedTypes
  • #450 OnTypeRename -> LinkedEditingRange
  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bugs

  • #478 ensure facade interfaces get registered in external service collection
  • #477 ensure facade interfaces get registered in external service collection
  • #475 Fixed json name of adapterID for debug adapter protocol
  • #459 Added fixes for document color provider, as well as related fixes for other resolve features.
  • #457 Updated client registration handler to behave more like the vscode
  • #447 Fixed case where if serialization fails the server will die silently.

chores

  • #474 Correct readme path to hopefully fix #469
  • #465 Removed ConnectedCapability interface as it isn't needed any more
  • #460 make all integration tests retryable. nullability clean up

dependenciess

  • #476 Bump JetBrains.ReSharper.CommandLineTools from 2020.2.4 to 2020.3.0
  • #472 Bump Bogus from 32.0.1 to 32.0.2
  • #471 Bump husky from 4.3.5 to 4.3.6
  • #468 Bump DryIoc.Internal from 4.5.2 to 4.6.0
  • #466 Bump husky from 4.3.0 to 4.3.5
  • #462 Bump lint-staged from 10.5.2 to 10.5.3
  • #454 Bump Microsoft.CodeAnalysis.Analyzers from 3.3.1 to 3.3.2
  • #453 Bump DryIoc.Internal from 4.5.1 to 4.5.2
  • #452 Bump peaceiris/actions-label-commenter from v1.8.1 to v1.8.2
  • #451 Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3
  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.19.0-beta.3

3 years ago

As part of this release we had 41 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

TelemetryEvent Change

The property TelemetryEvent.Data has been renamed to ExtensionData and the type has been changed as well.

Execute Command Handler Base Classes Renamed

#479 added support for return types from execute command, as a part of that change the name of the helper base classes has changed from ExecuteCommandHandlerBase<> to ExecuteTypedCommandHandlerBase<>. A new set of classes named ExecuteTypedResponseCommandHandlerBase<> have also been added.

breaking changes

  • #464 Added AllowDerivedRequest support for lsp telemetry event
  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

feature

  • #458 Added ability to define the scheduler used for both input and output

enhancements

  • #479 Added support for open generic params and handler interfaces. Added ExecuteCommandParams<>
  • #470 Added new FileOperations and updated to work with latest annotations
  • #461 Reduce use of Assembly.GetTypes() or ExportedTypes
  • #450 OnTypeRename -> LinkedEditingRange
  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bugs

  • #478 ensure facade interfaces get registered in external service collection
  • #477 ensure facade interfaces get registered in external service collection
  • #475 Fixed json name of adapterID for debug adapter protocol
  • #459 Added fixes for document color provider, as well as related fixes for other resolve features.
  • #457 Updated client registration handler to behave more like the vscode
  • #447 Fixed case where if serialization fails the server will die silently.

chores

  • #474 Correct readme path to hopefully fix #469
  • #465 Removed ConnectedCapability interface as it isn't needed any more
  • #460 make all integration tests retryable. nullability clean up

dependenciess

  • #476 Bump JetBrains.ReSharper.CommandLineTools from 2020.2.4 to 2020.3.0
  • #472 Bump Bogus from 32.0.1 to 32.0.2
  • #471 Bump husky from 4.3.5 to 4.3.6
  • #468 Bump DryIoc.Internal from 4.5.2 to 4.6.0
  • #466 Bump husky from 4.3.0 to 4.3.5
  • #462 Bump lint-staged from 10.5.2 to 10.5.3
  • #454 Bump Microsoft.CodeAnalysis.Analyzers from 3.3.1 to 3.3.2
  • #453 Bump DryIoc.Internal from 4.5.1 to 4.5.2
  • #452 Bump peaceiris/actions-label-commenter from v1.8.1 to v1.8.2
  • #451 Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3
  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.19.0-beta.2

3 years ago

As part of this release we had 30 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

TelemetryEvent Change

The property TelemetryEvent.Data has been renamed to ExtensionData and the type has been changed as well.

breaking changes

  • #464 Added AllowDerivedRequest support for lsp telemetry event
  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

feature

  • #458 Added ability to define the scheduler used for both input and output

enhancements

  • #461 Reduce use of Assembly.GetTypes() or ExportedTypes
  • #450 OnTypeRename -> LinkedEditingRange
  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bugs

  • #459 Added fixes for document color provider, as well as related fixes for other resolve features.
  • #457 Updated client registration handler to behave more like the vscode
  • #447 Fixed case where if serialization fails the server will die silently.

chores

  • #465 Removed ConnectedCapability interface as it isn't needed any more
  • #460 make all integration tests retryable. nullability clean up

dependenciess

  • #462 Bump lint-staged from 10.5.2 to 10.5.3
  • #454 Bump Microsoft.CodeAnalysis.Analyzers from 3.3.1 to 3.3.2
  • #453 Bump DryIoc.Internal from 4.5.1 to 4.5.2
  • #452 Bump peaceiris/actions-label-commenter from v1.8.1 to v1.8.2
  • #451 Bump Microsoft.NET.Test.Sdk from 16.8.0 to 16.8.3
  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.19.0-beta.1

3 years ago

As part of this release we had 17 issues closed.

Breaking Changes

Serializer Changes

  • The LSP Serializer renamed to LSPSerializer
  • Added serialization rules for client
    • Ensure code actions are provided properly.
  • Updated serialization rules for server

Registration Changes

The 3.16 specification defines the SemanticLegend in such a way that the client produces a list of supported tokens and the server must return the tokens it supports and the index order it will use.

Today we get the registration options at registration of a handler, but this is typically before we have started communicating with the server.

This change adds a new interface IRegistrationOptions<TOptions, TCapability> and all interfaces have been updated to implement this interface if they have both a client capability and a server registration option.

Abstract Handlers Registration Options

The abstract base classes by the above change now have a new method that must be implemented.

protected internal abstract TRegistrationOptions CreateRegistrationOptions(TCapability capability);

The base handler then caches the resulting value so this method is only ever called once.

Existing implementations of GetRegistrationOptions can be replaced with CreateRegistrationOptions.

Abstract Handlers

All the abstract handler base classes have been renamed to have a Suffix of "Base" if there was not one there before.

The fix for this is simply to make sure the Base suffix has been applied.

Feature Specific Files

This is not a breaking change, the goal was to make sure that namespaces did not change, if there is a miss let me know.

Any classes related to the Request, Response, Capability and Registration Options have been moved into a XyzFeature.cs file. This will help reduce the number of overall files in the repo, as well as hopefully with discoverabiliy. More importantly this make it easier to create new features, as all the components for a given feature will be in the same file.

TextDocumentSyncRegistrationOptions Added

The IDidXyzTextDocument handlers have been updated to have specific named options, and a master options class TextDocumentSyncRegistrationOptions has been added. You provide the TextDocumentSyncRegistrationOptions and all the other named options can be implicitly created from it.

Source Generation

Source Generation has been refactored to be a little more flexible and better organized (it's not prefect but better).

Some documentation has been added to document the attributes and their usage. These should available to consumers to also use themselves, please let me know of any bugs you might encounter with them.

HandlerIdentity is now an interface named IHandlerIdentity

HandlerIdentity is not automatically implemented via source generators (you can implement it yourself if you want to)

This type is used to ensure proper routing of CodeAction, CodeLens and other requests. Changing it an interface was required to support classes and records at the same time.

Records

Most model classes have been moved to record classes and init only properties. This allows use of the with operator.

Records are supported in netstandard2.0 using a shim class very similar to null reference types.

Added two new library references

Microsoft.Extensions.Configuration.Binder and Microsoft.Extensions.Options.ConfigurationExtensions have been added to make integration between configuration and options a little easier.

CompletionItem TextEdit change

CompletionItem has been updated as the per the spec, to be a union of TextEdit and InsertRangeEdit.

Number types have changed

The spec added deeper definition for integer, unsigned integer and decimal

uinteger - Defines an unsigned integer number in the range of 0 to 2^31 - 1. Due to this constraint it's easier for us to just keep using int instead of causing some headache by using uint.

long is now gone, replaced with int. Also a few places where precentage was allowed had been double but they have been changed to uint so they have been changed to int accordingly

Types with breaking changes:

  • FoldingRange
  • BooleanNumberString
  • IWorkDoneObserver
  • WorkDoneProgressBegin
  • WorkDoneProgressReport

Semantic Tokens Method

member has been renamed method as per the spec.

Auto-generated method perfixes have been updated

Request objects with the prefix "Set", "Attach", "Launch" or "Read" will no longer be prefixed with "Send" or "Request".

router.change affects the following:

  • Debug Adapter Protocol
    • SetVariableArguments - from router.SendSetVariable(...) to router.SetVariable()
    • AttachRequestArguments - from router.RequestAttach(...) to router.Attach()
    • LaunchRequestArguments - from router.RequestAttach(...) to router.Launch()
    • ReadMemoryArguments - from router.SendReadMemory(...) to router.ReadMemory()
    • SetBreakpointsArguments - from router.SendSetBreakpoints(...) to router.SetBreakpoints()
    • SetDataBreakpointsArguments - from router.SendSetDataBreakpoints(...) to router.SetDataBreakpoints()
    • SetExceptionBreakpointsArguments - from router.SendSetExceptionBreakpoints(...) to router.SetExceptionBreakpoints()
    • SetExpressionArguments - from router.SendSetExpression(...) to router.SetExpression()
    • SetFunctionBreakpointsArguments - from router.SendSetFunctionBreakpoints(...) to router.SetFunctionBreakpoints()
    • SetInstructionBreakpointsArguments - from router.SendSetInstructionBreakpoints(...) to router.SetInstructionBreakpoints()
  • Language Server Protocol
    • SetTraceParams - from router.SendSetTrace(...) to router.SetTrace()

DAP Updates

  • This updates to the latest DAP spec, added in a few enums and replaced strings that were used in a few locations.
  • Added InvalidatedEvent

breaking changes

  • #448 Updated to latest DAP spec
  • #446 Feature/4 spec update
  • #442 Records and init only properties
  • #440 Breaking: Registration Options require Client Capability during creation
  • #432 Breaking: LSP ISerializer interface is now deprecated, and marked obsolete

enhancements

  • #431 Added latest spec changes, showDocument and onTypeRename
  • #417 Added warning message when a message is dropped during initialization
  • #314 Move to use built in source generation

bug

  • #447 Fixed case where if serialization fails the server will die silently.

dependenciess

  • #445 Bump prettier from 2.2.0 to 2.2.1
  • #444 Bump peaceiris/actions-label-commenter from v1.8.0 to v1.8.1
  • #443 Bump Bogus from 31.0.3 to 32.0.1
  • #441 Bump peaceiris/actions-label-commenter from v1.6.1 to v1.8.0
  • #437 Bump lint-staged from 10.5.1 to 10.5.2
  • #435 Bump ReportGenerator from 4.8.0 to 4.8.1
  • #433 Bump prettier from 2.1.2 to 2.2.0
  • #428 Bump ReportGenerator from 4.7.1 to 4.8.0

v0.18.3

3 years ago

As part of this release we had 7 commits which resulted in 7 issues being closed.

feature

  • #410 Added some additional helpers for both Range and Position

enhancement

  • #415 Updated to the latest spec changes

bugs

  • #414 ensure prepare rename does not try to register with the client
  • #412 Fix exception thrown by disctionary inside formatting options
  • #411 The given key 'insertFinalNewline' was not present in the dictionary

chore

  • #413 Added a few assertions for prepare rename

dependencies

  • #408 Bump lint-staged from 10.5.0 to 10.5.1

v0.18.2

3 years ago

As part of this release we had 6 commits which resulted in 5 issues being closed.

This is a minor patch release that fixes a small issue with Debug Adapter Serialization not working properly out of the box, as well as continued work to update the proposal types to by in sync for the next spec version.

enhancement

  • #401 react to new registration type for semantic tokens

chore

  • #402 Added retry facts for ci only

mysterious

  • #400 Fix/dap default serialization

dependenciess

  • #403 Bump DryIoc.Internal from 4.5.0 to 4.5.1
  • #399 Bump GitVersion.Tool from 5.3.7 to 5.5.0