Skip to content

Autocomplete not inserting parentheses or arguments for some items #2992

Closed

Description

@Merrit

Describe the bug
Autocomplete seems to be working for some items, not for others.

So far I have tested these:

Working Not working
Custom functions print
.forEach widgets

So this is working as expected for something like a function I wrote myself, or myList.forEach(). Not sure why others aren't working.

To Reproduce
Steps to reproduce the behavior:

  1. In a function, eg main(), type prin
  2. Press Tab to accept 'Print' autocomplete

Expected behavior
The item, eg print() or Text() should be completed with parentheses and arguments if appropriate.

Screenshots
UdRW4b6cJu

9SWkoLOBev

Versions (please complete the following information):

  • VS Code version: 1.51.1
  • Dart extension version: 3.17.0
  • Dart/Flutter SDK version:
    Dart: 2.12.0-76.0.dev
    Flutter: 1.25.0-4.0.pre

Activity

  1. added this to the v3.18.0 milestone on Dec 7, 2020
  2. added
    in editorRelates to code editing or language features
    in lsp/analysis serverSomething to be fixed in the Dart analysis server
    on Dec 7, 2020
  3. DanTup commented on Dec 7, 2020

    @DanTup
    Member

    Thanks - tracked this down. We're not currently supported this for things that come via SuggestionSets. I'd actually accidentally fixed this while implementing something else, but that change is not ready to land yet, so I've extracted the fix t o its own change.

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

  4. DanTup commented on Dec 7, 2020

    @DanTup
    Member
  5. Merrit commented on Dec 7, 2020

    @Merrit
    Author

    Awesome!

    Thank you for all your hard work Danny, very much appreciated 🎆

  6. kinex commented on Dec 8, 2020

    @kinex

    I guess it is a related issue that parenthesis are not added for example to ChangeNotifier.notifyListeners()? This stopped working today after I upgraded Dart Code to the latest version (and enabled LSP).

    So this will be fixed too by dart-lang/sdk@2f2f9fc? I guess it will take months before that will be available in Flutter stable, so are there any workarounds? I think this is quite an annoying issue, I already wrote some bugs due to this, see dart-lang/sdk#58281.

  7. DanTup commented on Dec 8, 2020

    @DanTup
    Member

    I guess it is a related issue that parenthesis are not added for example to ChangeNotifier.notifyListeners()?

    If you're on the Flutter stable channel, it seems likely. Support for dart.completeFunctionCalls is not yet available in Flutter's stable channel.

    So this will be fixed too by dart-lang/sdk@2f2f9fc?

    I just tested it on a recent Flutter master and I'm getting parens accepting notifyListeners with dart.completeFunctionCalls enabled, so I believe it's either fix by that change (or the previous one that first added the functionality).

    are there any workarounds?

    You could either switch back from LSP, or use a different Flutter channel. Unfortunately I don't believe there are any other workarounds. The LSP functionality is not complete in current Flutter stable (this is the reason it's still behind the preview flag). LSP won't be made default until after these fixes all make the Flutter stable channel, though I'd encourage using LSP if there's nothing breaking to you to help identify any remaining issues/gaps. If this is sufficiently annoying, I would recommend switching back.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    in editorRelates to code editing or language featuresin lsp/analysis serverSomething to be fixed in the Dart analysis serveris bug

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions