Skip to content

Roadmap #1

@KillTheMule

Description

@KillTheMule

Short-Term

Mid-Term

  • Consider making a difference between requests and notifications, and send out notifications with the proper message type, and don't wait for a response

Fuzzy goals

Things to think about

  • Could we reasonably offer a single-threaded API, i.e. doing away with Send and Sync? Don't want to duplicate it all, but since we're generating the neovim API automatically anyways, it might be feasible
  • Consider logging
    • Maybe tokio's tracing is an idea?
  • Rewrite the API to be type save, and hide rmpv::Value from the user
    • Maybe hiding rmpv::Value isn't helpfull or needed?
    • Can probably be done for outgoing requests by recursively creating values
      • Fixed args are easy, but something like nvim_call_function probably needs going through a trait
    • Incoming Responses can be done like fixed args
    • Incoming Notifications/Requests might be impossible.
      • Check out rmp-serde or so, so maybe the user has to just declare a struct
    • Strongly typed API #8

Old stuff

  • Figure out how plugins can quit
  • Can we merge Requester into Neovim? Could avoid doubling the API
  • Figure out what to do if the handler needs some cleanup logic
  • Consider error handling
  • Document the library
    • I consider this done initially, from now on everything new should be directly documented, and we should be fine.
  • We need Tokio right now. What can we do to stay "as generic as possible", so we can move to other executors when the possibility arrives?
    • Use stuff from futures as far as possible.
    • See what we really need to expose from crate::runtime

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