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

'declare method' quick fix for adding a private method #37782

Open
mjbvz opened this issue Apr 3, 2020 · 9 comments
Open

'declare method' quick fix for adding a private method #37782

mjbvz opened this issue Apr 3, 2020 · 9 comments

Comments

@mjbvz
Copy link
Contributor

@mjbvz mjbvz commented Apr 3, 2020

From microsoft/vscode#94118

TypeScript Version: 3.9.0-dev.20200330

Search terms

  • quick fix
  • declare method
  • private

Repro
For ts file:

index.ts

class Bar {
    bar() {
         this._baz(123)
    }
}
  1. Trigger quick fixes on _baz

Feature request:
#36249 added a quick fix for adding private properties. However there is no quick fix for adding a private method

Playground Link:

Related Issues:

@bpasero
Copy link
Member

@bpasero bpasero commented Apr 10, 2020

I am the original one complaining about this: what I expect is NOT having 1 code action per visibility, but rather ONE code action (as today) with a tab-stop at the visibility that I can flip the various visibilities. I realise this may need support from VSCode too. Here is how it would work:

  • you trigger the code action
  • you get into a mode like snippets where certain places are stops you can cycle through with Tab key
  • each method or property has a tab stop where you can navigate to and once you are there, be able to select a modifier private, protected, public etc.
@a-tarasyuk
Copy link
Contributor

@a-tarasyuk a-tarasyuk commented Apr 13, 2020

@DanielRosenwasser Is there a way to have a sub action to handle tab-stop? Or need to generate all possible actions for various methods/properties and VSCode should resolve tab-stop? Do I need to close #37806, and revert #36249?

@DanielRosenwasser
Copy link
Member

@DanielRosenwasser DanielRosenwasser commented Apr 13, 2020

Could you explain what you mean by tab-stop? I feel like I have an idea, but I might be out of the loop on something.

@a-tarasyuk
Copy link
Contributor

@a-tarasyuk a-tarasyuk commented Apr 13, 2020

@bpasero

Could you explain what you mean by tab-stop?

@mjbvz
Copy link
Contributor Author

@mjbvz mjbvz commented Apr 13, 2020

Tabstops are from VS Code's snippets: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_tabstops

There is no concept of tabstops in the TS Server api today since it only talks about text. I've opened #25207 which proposes adding the idea of snippets to typescript

@a-tarasyuk
Copy link
Contributor

@a-tarasyuk a-tarasyuk commented Apr 14, 2020

Right now I see two ways for this issue

  1. Resolve this issue based on the original requirements
  2. Close #37806 revert #36249 and add tab-stop for modifiers after #25207 will be implemented

I feel like I have an idea

@DanielRosenwasser Maybe you have a better idea :)

@DanielRosenwasser
Copy link
Member

@DanielRosenwasser DanielRosenwasser commented Apr 14, 2020

Hah, I meant like "I might have an idea of what you mean by tab stops". I think the weird thing is that the rename location already allows you to make something #-private, but it's not clear whether we could make a conditional tabstop location for when the declaration isn't #-private

@bpasero
Copy link
Member

@bpasero bpasero commented May 9, 2020

To demonstrate what I expect to happen, here is what Eclipse does:

recording

Notice how some tab-stops are linked, so renaming the method actually also renames the call!

And what VSCode does:

kap

Paper cuts:

  • method is added above constructor???
  • no way to change anything after the method was inserted

Can we reopen this or reconsider this?

@sandersn
Copy link
Member

@sandersn sandersn commented May 11, 2020

Yeah, #37806 partially fixes this but doesn't address the full issue. I'll re-open that so we can unify the two fixes when post-codefix rename locations are available.

@sandersn sandersn reopened this May 11, 2020
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.

5 participants
You can’t perform that action at this time.