Closed Milly closed 2 months ago
[!IMPORTANT]
Review skipped
Auto reviews are disabled on base/target branches other than the default branch.
Please check the settings in the CodeRabbit UI or the
.coderabbit.yaml
file in this repository. To trigger a single review, invoke the@coderabbitai review
command.You can disable this status message by setting the
reviews.review_status
tofalse
in the CodeRabbit configuration file.
The changes introduce new functionality to unload Denops plugins, with appropriate events and error handling. The Service
interface and various scripts now include methods and events to manage the plugin lifecycle more robustly. Updates were made to testing files and configurations to ensure this new functionality works correctly, providing a more comprehensive and error-resilient plugin management experience.
Files/Paths | Change Summary |
---|---|
autoload/denops/_internal/plugin.vim |
Introduced functions for plugin unloading and state updates. |
autoload/denops/plugin.vim |
Added public function denops#plugin#unload(name) for unloading plugins. |
deno.jsonc |
Modified coverage script to exclude test files and added exclusion entry under the test section. |
denops/@denops-private/host.ts |
Added unload(name: string): Promise<void> method to Service interface. |
denops/.../host/nvim_test.ts , vim_test.ts |
Added unload function to Service interface in both Vim and Neovim test files. |
denops/@denops-private/host_test.ts |
Added unload method to Service interface. |
denops/@denops-private/plugin.ts |
Introduced Entrypoint type definition for plugin entrypoints. |
denops/@denops-private/service.ts |
Enhanced Service class with new methods for plugin load and unload, and introduced PluginModule type. |
denops/@denops-private/service_test.ts |
Added extensive test scenarios for plugin loading, unloading, and reloading. |
doc/denops.txt |
Updated documentation for loading, unloading, and reloading plugins, with new event descriptions. |
plugin/denops.vim |
Extended to include plugin unload events like DenopsPluginUnloadPre , DenopsPluginUnloadPost . |
plugin/denops/debug.vim |
Added handlers for DenopsPluginFail and plugin unload events with debug messages. |
tests/.../functions/plugin_test.ts |
Added new test cases for denops#plugin#unload() and extended reload scenarios. |
tests/.../dummy_invalid_dispose_plugin.ts , dummy_valid_dispose_plugin.ts |
Added new test dummy plugins with valid and invalid dispose methods. |
sequenceDiagram
participant User
participant Vim
participant Denops
participant Plugin
User->>Vim: Call denops#plugin#unload(name)
Vim->>Denops: Invoke unload(name)
Denops->>Plugin: Fire DenopsPluginUnloadPre
Plugin-->>Denops: Acknowledge Pre-Unload
Denops->>Plugin: Execute unload logic
Plugin-->>Denops: Unload Success/Fail
Denops->>Plugin: Fire DenopsPluginUnloadPost or DenopsPluginUnloadFail
Plugin-->>Denops: Acknowledge Post-Unload or Handle Fail
Denops->>Vim: Return Status
Vim->>User: Unload Complete/Error
In the meadow of code, plugins do prepare,
Unloaded gracefully, handled with care.
Events now whisper, the lifecycle's tale,
With DeNops guiding, they will not fail.
A rabbit hops, proud of the feat,
With code as its meadow, life is complete. ๐ธ๐ ๏ธ
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Attention: Patch coverage is 97.77778%
with 2 lines
in your changes missing coverage. Please review.
Project coverage is 92.79%. Comparing base (
880e30e
) to head (a519c0f
).
Files | Patch % | Lines |
---|---|---|
denops/@denops-private/host.ts | 33.33% | 2 Missing :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
@coderabbitai review
When https://github.com/vim-denops/deno-denops-core/pull/9 is merged, I would like to have it released as @denops/core@7.0.0-pre1
and replace the import with it.
Refs #349, https://github.com/vim-denops/deno-denops-core/pull/8
Plugin API:
Entrypoint
can now returnAsyncDisposable
.denops#plugin#unload()
.denops#server#close()
is called.denops#server#stop()
is called.SIGINT
.Vim API:
denops-function
:denops#plugin#unload({plugin})
DenopsPluginUnloadPre:{plugin}
DenopsPluginUnloadPost:{plugin}
DenopsPluginUnloadFail:{plugin}
Additional
Added tests for script rewrite reload, note that this breaks
deno test --watch
.Summary by CodeRabbit