microsoft / microsoft/vscode-java-pack

Make Ctrl+T more context-dependent

Offen
#899 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

ai-triaged enhancement feature-request
Vorherrschende Sprache
TypeScript
Sterne
352
Forks
166
Ø Merge
17 Std. 47 Min.
Gemergte PRs (30 T.)
32

Beschreibung

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.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Die Payload nennt keine Quelldateien oder Tests; beginne damit, Ctrl+T bei hervorgehobenen Java-Methoden in VS Code nachzustellen und vergleiche das bestehende Verhalten mit Eclipse. Als abgeschlossen gilt es, wenn der Baum den relevanten Methodenimplementierungen der deklarierten Oberklasse und Unterklasse folgt und die Auswahl eines Knotens zu dieser Methodenimplementierung statt zur Typdeklaration navigiert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, typescript, vscode
Bereich
developer-experience, tooling
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
32/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.