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

x/tools/gopls: option to autocomplete function call without parentheses #41813

Open
HymanZHAN opened this issue Oct 6, 2020 · 5 comments
Open

x/tools/gopls: option to autocomplete function call without parentheses #41813

HymanZHAN opened this issue Oct 6, 2020 · 5 comments

Comments

@HymanZHAN
Copy link

@HymanZHAN HymanZHAN commented Oct 6, 2020

(This is more of a question before it becomes a feature request. However, the original Slack invite link is no longer active.)

Is your feature request related to a problem? Please describe.
Is it possible to leave out the parentheses of a method when doing autocompletion? For example, when typing time.No and hit tab, instead of autocompleting with time.Now() is it possible to complete it as time.Now?

Describe the solution you'd like
Have an option for this, something like gopls.includeParenthesesWhenAutocomplete that can be set to false.

Describe alternatives you've considered
N/A

Additional context
I have been writing a mix of C++, Python, and JS/TS, and all these languages' autocompletion on VS Code are without the parentheses. It's muscle memory for me now to reach for ( after completing the method and it's really counter-productive especially when I need to switch between languages.

@hyangah hyangah changed the title Possible to exclude the brackets when doing autocompletion? x/tools/gopls: option to autocomplete function call without parentheses Oct 6, 2020
@hyangah
Copy link
Contributor

@hyangah hyangah commented Oct 6, 2020

@HymanZHAN thanks for the feature request. This is about adding a new knob for gopls' autocompletion behavior, so I will transfer this to its issue tracker. (cc @stamblerre )

@hyangah hyangah transferred this issue from golang/vscode-go Oct 6, 2020
@gopherbot gopherbot added this to the Unreleased milestone Oct 6, 2020
@HymanZHAN
Copy link
Author

@HymanZHAN HymanZHAN commented Oct 6, 2020

@hyangah Thanks!

@stamblerre stamblerre removed this from the Unreleased milestone Oct 6, 2020
@stamblerre stamblerre added this to the gopls/unplanned milestone Oct 21, 2020
@muirdm
Copy link

@muirdm muirdm commented Nov 21, 2020

If you disable snippets in your editor then you won't get the parens anymore (but will lose other snippet dependent functionality).

Why don't the other languages include parens when completing function calls? I can appreciate not being used to it, but it objectively saves keystrokes.

@HymanZHAN
Copy link
Author

@HymanZHAN HymanZHAN commented Nov 21, 2020

@muirdm My personal experience actually speaks otherwise. Including parens (and the input inside parens) as snippets does save the keystroke of (. But inside the snippet, you don't have automatic IntelliSense anymore; You have to manually trigger it by Ctrl+Space or you will need to type a lot more. I'd argue it objectively increases keystrokes. This is quite annoying when you have functions with multiple parameters.

Also, it's way easier to mishit Tab and exit the snippet accidentally in the middle of typing, as I tend to hit Tab for autocompletion (even though it's not there). I also use an extension called TabOut, which lets you skip closing characters like " and ). (Old habits from using Visual Studio, without which I will be 10X less productive. 😅) Obviously, using this inside a snippet will exit the snippet first, which is really annoys me.

BTW, my favorite snippet implementation is actually the one of Visual Studio, where you can use Tab to loop through all snippet input space holders, modify previous input, have automatically autocompletion and use Enter to finish the snippet. Sadly that's not how VS Code implements it.😥

@muirdm
Copy link

@muirdm muirdm commented Nov 21, 2020

inside the snippet, you don't have automatic IntelliSense anymore

I have my editor set up where I do get automatic completions inside the snippet. After inserting a snippet, it automatically triggers a completion at the first placeholder. I can accept it right away (and overwrite the placeholder), or simply start typing to filter completions. I press TAB to choose the inner completion, then TAB again to advance to the next outer placeholder.

I definitely agree that nested completion/snippets is finicky, but I think most of that is just editors not doing it well by default.

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

Successfully merging a pull request may close this issue.

None yet
5 participants