Prioritize and Differentiate Method Completions by Declaring Type
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- java, typescript
- Domaine
- developer-experience, tooling
Piste de recherche
Aucun fichier d’implémentation ni test n’est identifié dans l’issue. Commencez par localiser les points d’entrée du classement des complétions Java et de la présentation des éléments de complétion, puis suivez la manière dont les types déclarants et l’héritage sont représentés. Définissez l’ordre des complétions et les marqueurs visuels pour les méthodes actuelles, de l’ancêtre direct, d’interface et des niveaux d’héritage plus profonds, et ajoutez une couverture pour des exemples d’héritage de classes et d’interfaces.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
Improve Java IntelliSense in Visual Studio Code by prioritizing methods based on their declaring type and visually distinguishing methods declared in the current class from inherited ones.
Problem
When invoking code completion on an object, methods from the entire inheritance hierarchy (class, superclasses, interfaces) are presented in a flat, mostly alphabetical or heuristically ranked list.
This creates two issues:
- Hard to quickly identify methods defined in the current class
- No clear distinction between local vs inherited methods
Expected Behavior
1. Ordering by Declaring Type
Completion items should be grouped and ordered as follows:
- Methods declared in the current class
- Methods from direct superclasses
- Methods from interfaces
- Methods from deeper inheritance levels
Within each group, keep existing sorting (alphabetical or relevance-based).
2. Frequency-Based Promotion
- Frequently used methods may be promoted higher in the list
- However, usage-based ranking should not completely override structural grouping
3. Visual Differentiation
- Methods declared in the current class should be bolded
- (Optional) Other methods may include subtle indicators of their declaring type
Example (Class Inheritance)
class Base {
void baseMethod() {}
}
interface MyInterface {
void interfaceMethod() {}
}
class Derived extends Base implements MyInterface {
void derivedMethod() {}
}
When invoking completion on Derived:
Expected order:
- derivedMethod()
- baseMethod()
- interfaceMethod()
Example (Interface Inheritance)
interface BaseRepository<T> {
void save(T entity);
}
interface PagingRepository<T> extends BaseRepository<T> {
Iterable<T> findAll();
}
interface UserRepository extends PagingRepository<User> {
User findByEmail(String email);
}
When invoking completion on UserRepository:
Expected order:
- findByEmail(String email) // declared in UserRepository
- findAll() // from PagingRepository
- save(T entity) // from BaseRepository
Real-World Use Case
This is especially useful in frameworks like Spring Data / Hibernate, where repositories are composed via multiple interface layers.
For example:
- Developers primarily care about methods declared in their own repository interface
- Framework-provided methods (e.g.,
save,findAll) are secondary but still important
Improved ordering and highlighting would:
- Make custom query methods immediately visible
- Reduce cognitive load when working with large inherited APIs
Motivation
- Faster identification of relevant methods
- Better usability in deep inheritance hierarchies
- Clear distinction between user-defined and framework-provided methods
- Aligns with developer mental models
- Langage dominant
- TypeScript
- Étoiles
- 2.3k
- Forks
- 547
- Merge moyen
- 5 h 36 min
- PR mergées (30 j)
- 10
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de redhat-developer/vscode-java
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
redhat-developer/vscode-java#4511 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
redhat-developer/vscode-java#4426 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
redhat-developer/vscode-java#4506 · 7 commentaires · 4 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
redhat-developer/vscode-java#4505 · 5 commentaires · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
redhat-developer/vscode-java#4504 · 3 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de redhat-developer/vscode-java
Issues similaires
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
supabase/agent-skills#611 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
polka-codes/test#345 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 92/100
GoogleChromeLabs/project-sesame#217 ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
solana-foundation/solana-com#2202 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100