Skip to content

Connect to the Dart Tooling Daemon from the Analysis Server #55629

Closed

Description

@kenzieschmoll

An API will need to be established on the analysis server that will allow the IDEs to set the DTD URI on the analysis server. Once a DTD URI is received, the Analysis server will need to use package:dtd to connect the the Dart Tooling Daemon, and then register any methods or services that it will provide to other DTD clients.

Tracking issues for sending the DTD URI to the analysis server:

Activity

  1. added
    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
    pkg-ddsFor issues related to the Dart Development Service
    on May 3, 2024
  2. added
    devexp-serverIssues related to some aspect of the analysis server
    and removed
    area-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
    pkg-ddsFor issues related to the Dart Development Service
    on May 8, 2024
  3. added
    type-enhancementA request for a change that isn't a bug
    P2A bug or feature request we're likely to work on
    on May 10, 2024
  4. kenzieschmoll commented on Aug 16, 2024

    @kenzieschmoll
    ContributorAuthor

    @DanTup is actively working on this issue.

  5. added
    area-devexpFor issues related to the analysis server, IDE support, linter, `dart fix`, and diagnostic messages.
    and removed on Feb 21, 2025
  6. DanTup commented on Mar 5, 2025

    @DanTup
    Collaborator

    The work for this has been done for a while, but it's behind some flags that we should consider removing.

    1. Dart-Code has a flag dart.previewDtdLspIntegration that must currently be set to true for it to tell the analysis server to connect to DTD
      I suggest we remove this flag for the next Dart-Code release and instead gate it on Dart SDK >= 3.8.0-0, which means the current bleeding-edge builds will have this connected (no handlers will currently be registered, but it will give more coverage of the server with this connection active). @bwilkerson WDYT?
    2. Dart-Code has another flag dart.experimentalDtdHandlers that tells the server to register DTD handlers marked as experimental
      We should keep this flag as-is, but change the property editor handlers to be not marked as experimental once (removing the experimental/ prefix from their method names) when we think they are good to ship (or at least we don't anticipate any breaking changes).
      Since this changes the method name, we will first need to update the property editor to support the new names (in addition), which is something @elliette prepared previously, but I suggested delaying until we're sure the API is good.
      After that change has landed in the property editor, we can rename the methods (and once that's rolled into Flutter used by DevTools, the code for the experimental name could be removed).
  7. bwilkerson commented on Mar 5, 2025

    @bwilkerson
    Member

    That all sounds reasonable to me.

  8. elliette commented on Mar 5, 2025

    @elliette
    Contributor

    SGTM as well! Opened flutter/devtools#8990 to support the non-experimental APIs

  9. DanTup commented on Mar 6, 2025

    @DanTup
    Collaborator

    I've done (1) in Dart-Code (Dart-Code/Dart-Code@c6093c7) and I've prepared a CL to make the LSP handlers non-experimental in this CL here:

    https://dart-review.googlesource.com/c/sdk/+/414060

    I think we'll probably want to land flutter/devtools#8990 and then get a version of DevTools with that change into the Dart SDK before we land my CL to minimize disruption for anyone testing out the property editor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P2A bug or feature request we're likely to work onarea-devexpFor issues related to the analysis server, IDE support, linter, `dart fix`, and diagnostic messages.devexp-serverIssues related to some aspect of the analysis servertype-enhancementA request for a change that isn't a bug

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions