microsoft / microsoft/vscode-java-pack

Make Ctrl+T more context-dependent

Aperta
#899 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

ai-triaged enhancement feature-request
Lingua principale
TypeScript
Stelle
352
Fork
166
Merge medio
17h 47m
PR unite (30g)
32

Descrizione

Suggestion

When pressing Ctrl+T when highlighting a method, we see the method hierarchy instead of the type hierarchy and navigation leads us directly to the method's declaration within the selected type and not to the declaration of the type itself.

Use Cases

I want to be able to easily navigate to all implementations of subclasses as well as super classes of a certain method to better understand how a certain type affects implementation of the selected method.

Examples

Given the following class hierarchy:

class A {
public String generateGreeting() {
return "Hi!";
}
}

class B extends A {
@Override
public String generateGreeting() {
return "Hello!";
}
}

class C extends A {
@Override
public String generateGreeting() {
return "Guten Tag!";
}
}

When highlighting generateGreeting() and pressing Ctrl+T I want to see a tree where nodes represent classes implementing the highlighted method. The nodes' nesting represents the class hierarchy. The nodes shown depend on the declared type of the field/variable on the caller side. In case the method is highlighted at its declaration the declared type would be the class enclosing the method. All sub classes and super classes of the declared type implementing the method must be shown as nodes in the tree (not only sub classes). When clicking a node, VS Code navigates to the corresponding method implementation of the highlighted method, not to the beginning of the type declaration (current behavior):

Situation 1:
A a = new B();
a.generateGreeting();
Declared type would be A, so I want to see implementations of A.generateGreeting and B.generateGreeting and C.generateGreeting as nodes in the tree

Situation 2:
B b = new B();
b.generateGreeting();
Declared type would be B, so I want to see implementations of A.generateGreeting and B.generateGreeting as nodes in the tree, but not C.generateGreeting because it is neither a subclass nor a super class of B.

You could check Eclipse's behavior for an existing implementation.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Il payload non indica file sorgente né test; inizia riproducendo Ctrl+T sui metodi Java evidenziati in VS Code e confronta il comportamento esistente con Eclipse. Il lavoro è completato quando l’albero segue le implementazioni dei metodi rilevanti della superclasse e della sottoclasse dichiarate, e la selezione di un nodo porta all’implementazione del metodo invece che alla dichiarazione del tipo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java, typescript, vscode
Ambito
developer-experience, tooling
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
32/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.