Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

tracking issue: wishlistย #142

Open
Open
@nrc

Description

@nrc

This is a grab bag of things I'd like the RLS to be able to do some day - some are easy, some are hard. I'll add more as I think of them.

Search/navigation

  • type info for path segments
  • find impls of trait
  • find impls for type
  • find overriding/overriden method
  • find (transitive) sub/super traits
  • find callers/callees
  • text search/regex search
  • identifier search (already in RLS, but not exposed in LSP)
  • goto type (for expressions, etc.)
  • goto def for macros
  • for extern crate, show all names imported into the program (with find all uses links for each name)
  • for a module or crate, show all public names (including via paths)

Refactoring

  • glob -> list import
  • remove unused imports
  • alias an import
  • inline module <-> file module <-> directory module
  • module <-> crate
  • move code between modules, adjusting imports as necessary
  • extract/line variable
  • extract function/inline function
  • bare function <-> method (note autoref for users)
  • match <-> if let
  • elide/reify lifetimes
  • change local/arg <-> field of a struct (e.g., fn foo(x, y, s) { ..x..y..} <-> fn foo(s) { ..s.x...s.y... }

Code generation

  • external mod
  • impl for type/type + trait
  • auto-imports
  • create new function for struct
  • add/erase type/lifetime arg
  • match, given an expression
  • generate function stub from call

Errors

  • show notes/other sub-errors
  • gracefully link errors with their notes
  • apply suggestions

Performance

  • lazy compilation
  • compiler-driven code completion (obsoletes Racer)

Visualisation, etc.

  • macro expansion, partial expansion
  • visualise lifetimes
  • better support for documentation

Applicability

Misc

  • debugging (probably not in the RLS, but perhaps we should think of integration)
  • build commands
    • doing non-check builds, running tests
    • customising builds, passing args to the RLS

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementIndicates new feature requests

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions