apache / apache/netbeans

LSP/TypeScript: support for type hierarchy and call hierarchy

Open
#4,417 3 comments 0 reactions 0 assignees View on GitHub
kind:feature needs:triage TypeScript
Dominant language
Java
Stars
3.1k
Forks
935
Avg merge
2d 3h
Merged PRs (30d)
17

Description

### Description

Type hierarchy and call hierarchy are very useful features when working on medium to large sized projects (specially the former). If the LSP/TypeScript plug-in for NetBeans supported these two features, I guess that any language supported through LSP would benefit from them (as long as the server in question also supports them, of course).

Call hierarchy is specified in [LSP 3.16](https://microsoft.github.io/language-server-protocol/specifications/specification-3-16/), whereas type hierarchy is specified in [LSP 3.17](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/).

If I'm not mistaken, NetBeans uses LSP4J to implement its LSP client. LSP 3.17 is almost fully supported by LSP4J 0.14 (except Notebook support and `WorkspaceSymbol.data`). So I guess that, as a first step, NetBeans should upgrade LSP4J from 0.12 to 0.14 (or the future 0.15).

### Use case/motivation

When we work with big code bases or when we work with vast libraries or frameworks, it's easy to forget the type hierarchy that a specific type belongs to. Being able to quickly view such hierarchy in the IDE itself is very useful. Otherwise you need to check the documentation (if it exists) or dive and search in the source code (if available).

With regard to the call hierarchy, it's very useful when we've a function or method that is used in many places and we want to change its signature. By inspecting the call hierarchy, we can know why it takes some parameters whose need is not so obvious.

### Related issues

_No response_

### Are you willing to submit a pull request?

No

### Code of Conduct

Yes

Contributor guide

Open the contributing guide

Research direction

Start by reviewing NetBeans' LSP client and the LSP4J dependency, currently described as 0.12, against the LSP 3.16 and 3.17 specifications. Determine the integration work needed for type hierarchy and call hierarchy, and verify that both features work for LSP servers that support them.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, typescript
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.