Skip to content

Infrastructure Enhancement #169

Description

@6cdh

Many features still have significant room for improvement. However, these enhancements often require additional infrastructure that we currently lack, such as:

  • A dedicated lexer
  • AST traversal for pre-expanded code (result of read-syntax)
  • AST traversal for fully expanded code (result of expand)
  • Cross-module analysis (dependency graph)
  • Language-specific analysis (e.g., improved support for Typed Racket, Rhombus, the little typer's language, the little prover's language)

Adding these new infrastructure could be complex and challenging.

To move forward effectively, I propose starting by creating a enhancement list for each feature.

For example, the enhanced feature list can be:

  • code completion when expansion never succeed (requires lexer + AST traversal for pre-expanded code), this should also helps for cases like issue textDocument/completion behaving strangely #163.
  • cross module variable renaming (requires cross-module analysis and dependency graph, etc).
  • show (function/struct/class/parameter/...) definition for hover request for local project (requires AST traversal for pre-expanded code, and maybe comment/scribble inside those definitions).
  • mitigated unused variables diagnostic when upstream can't fix fast, like issue false positive "unused variable" for sig-elems in define-signature #166 (requires AST traversal for pre-expanded code).
  • better formatting (requires lexer).

We can take these features one by one, gradually adding and evolving the infrastructure while delivering concrete feature improvements.

This approach will be easier after completing #168 (Extract logic into a library refactor).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions