chipsenkbeil / chipsenkbeil/distant.nvim
Rewrite plugin for v0.3
- Dominant language
- Lua
- Stars
- 1.4k
- Forks
- 16
- PR merge metrics
- No merged PRs in 30d
Description
This will serve as the main tracker for progress on v0.3. Currently, it's stored in a branch called `OverhaulUi`, but that branch has evolved into another massive rewrite of the plugin internals. They have shaped out to be much cleaner than in the past (thanks to using the [lua language server](https://github.com/LuaLS/lua-language-server)). Once the work listed is complete, v0.3 will be the official branch and pointed to at the top level (instead of v0.2).
### Engineering
**General**
- [X] Split functionality into `distant-core` and `distant` modules
- [x] Fix telescope integration (it's broken from refactoring)
- [x] Fix Dockerfile and associated tests
**Distant**
- [x] Create primary plugin entrypoint (more things at top-level of distant)
- [x] Revamp settings
- [X] Move server-specific settings to a field within the setup opts
- [X] ~~Add `cwd` support to server settings~~
- [x] Move dir and file mappings out of server `*` and into a top-level `mappings` (we don't need server-specific keybindings for navigation, it should always be the same)
- [x] Allow user to specify edit/up/mkdir/etc nav action by key instead of a map so they don't need to import nav actions and editor to assign them (e.g. `settings.mappings.dir.edit = ''`)
- [x] Create UI windows to visualize better
- [x] "Main Window" - hosts connections, system information, etc.
- [x] Connections tab
- [X] Show manager information
- [X] List active connections you can be from the manager
- [X] List available hosts from server settings
- [X] Be able to switch active connections
- [X] Be able to launch from available hosts
- [x] Be able to connect from available hosts
- [x] ~~Be able to jump to next or previous server connection using `` and ``~~
- [X] System information tab
- [X] Show system information
- [X] Update information whenever a connection is made/switched
- [x] ~~Log tab (???)~~
- [x] ~~Show log output (last X lines?)~~
- [x] ~~Debug tab (???)~~
- [x] ~~Show detailed manager information (pid, uptime, capabilities, pre-existing info?)~~
- [x] ~~Show detailed client information (uptime, capabilities, process list including shells, api, lsp, etc)~~
- [x] Help tab
- [x] Show keybindings similar to `lazy.nvim` style as I like it more than `mason.nvim`
- [x] Make keybindings changeable in settings reflect within help tab
- [x] "Metadata Window" - displays metadata for a file/directory/symlink
- [x] ~~"Toast" - port of [nvim-notify](https://github.com/rcarriga/nvim-notify)~~
- [X] ~~Replace errors with `vim.notify` with `vim.log.levels.ERROR` to be friendlier~~
- [x] ~~Support enabling/disabling "toast" for `vim.notify` in case user has another plugin (like `nvim-notify`) that they want to use~~
- [x] Move search state from plugin to editor since there is only one search at a time (maybe?)
- [x] Support file watching
- [x] Detect changes to files outside of neovim (similar to `FileChangedShell`, or triggering it if possible)
- [x] Understand if buffer has changed and prompt for reloading if so, otherwise reload
- [x] Use metadata to check for things like mtime change, file len change, etc. (cache those locally)
- [x] Support batch requests
**Distant Core**
- [X] Create a user interface library within `distant-core` ported from `mason.nvim`
- [X] Rewrite job api from `utils` into its own module
- [X] Rewrite authentication handling into its own module
- [X] Rewrite API abstraction to be cleaner and work better with language server
- [X] Add an event emitter (also from `mason.nvim`) so we can better capture when actions take place
- [X] Migrate installation logic into its own module
- [X] Create abstraction for version parsing and data
- [X] Create abstraction for destination/URI parsing and data
- [X] Create abstraction for client
- [X] Create abstraction for manager
- [X] Create abstraction for server
- [X] Rewrite CLI builder into standalone module with cleaner design and support for language server
- [X] Clean up `utils` module by removing unused functions, inlining single-use
**Tests**
- [x] Update driver to use new plugin API
- [x] Fix existing e2e tests
- [x] Fix existing unit tests
- [x] Write async versions of e2e API tests
**Bugs**
- https://github.com/chipsenkbeil/distant.nvim/issues/49
- https://github.com/chipsenkbeil/distant.nvim/issues/35
- https://github.com/chipsenkbeil/distant.nvim/issues/16
- https://github.com/chipsenkbeil/distant.nvim/issues/116
- https://github.com/chipsenkbeil/distant.nvim/issues/115
### Documentation
- [ ] Set up vimdoc generation from markdown via [panvimdoc](https://github.com/kdheepak/panvimdoc)
- [ ] Write updated plugin documentation in markdown to host on [distant.rocks](https://github.com/chipsenkbeil/distant.rocks)
- [ ] Provide overview of plugin (what is it? what does it do?)
- [x] Quickstart (basic setup, usage) - the existing quickstart can be repurposed
- [x] Installation guide (vimdoc is outdated, still referencing the library file instead of CLI)
- [ ] Explain health coverage via `:checkhealth distant`
- [x] Documentation of settings (needs to be completely rewritten)
- [x] Documentation of navigation - the existing doc can be reused (need to add metadata and check that up-to-date)
- [x] Documentation of vim commands like `:Distant` and `:DistantInstall` - the existing doc can be reused with tweaks
- [ ] Documentation of extensions - telescope can be reused
- [ ] Documentation of Lua API (e.g. `require('distant')`) - needs to be completely rewritten
- [x] Event subscriptions and kinds of events
- [ ] API field and methods
- [x] Buf field and methods
- [x] Settings field and methods
- [ ] Launch method
- [ ] Connect method
- [ ] Connections method
- [x] Server settings
- [x] Wrap method
- [ ] Utility methods (get/set active client, retrieve manager, retrieve client, cli/cli path)
- [x] FAQ - can be reused
- [ ] Changelog - can be reused, but need to add v0.3 information
- [ ] Credits - can be reused
- [ ] License - can be reused
- [ ] Record video overview of plugin
- [ ] Explain what it does and why
- [ ] Show UI to connect to a server
- [ ] Pull up the diagram to explain how it works
- [ ] Highlight shell usage
- [ ] Highlight LSP server usage
- [ ] Highlight multiple connections usage
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.