aboutsummaryrefslogtreecommitdiff
path: root/runtime/ftplugin/python.vim
diff options
context:
space:
mode:
authorEvgeni Chasnovski <evgeni.chasnovski@gmail.com>2026-06-27 21:35:19 +0300
committerGitHub <noreply@github.com>2026-06-27 14:35:19 -0400
commitcef31fde6ac77404f778627f1adcca68f905618e (patch)
tree099f4e7ef1af30d38b737b334b05a41d2905bd47 /runtime/ftplugin/python.vim
parent9202e2c80cea8da009b9c31cf9e0aa204e06397d (diff)
downloadrneovim-cef31fde6ac77404f778627f1adcca68f905618e.tar.gz
rneovim-cef31fde6ac77404f778627f1adcca68f905618e.tar.bz2
rneovim-cef31fde6ac77404f778627f1adcca68f905618e.zip
feat(pack): ensure order of `PackChanged{Pre,}` events #40455
Problem: due to totally async install/update/checkout there is no guaranteed order of `PackChanged{Pre,}` events across different plugins. This might lead to conflicts when callback for some "main" plugin relies on features from "dependency" plugin: i.e. callback for "main" plugin can trigger before installing/updating "dependency" plugin. The installation order can be enforced by separate vim.pack.add() calls, but update/checkout can not. Solution: Trigger events in bulk independently of async execution: - `PackChangedPre` before any action for all input plugins in order they are supplied. It will also trigger even if an action will fail. - `PackChanged` after all actions finished for all sucessfully affected plugins in order they are supplied. This also comes with a couple of side effect changes: - `PackChangedPre kind=delete` is now also triggered even if the delete won't be done. This makes it more aligned with `kind=install` and `kind=update`. - Force update (`:packupdate!`) and "udpate LSP action" now do two async steps: download/compute updates and apply them. This also results in two progress reports. This is mostly a by-product of the implementation (there has to be a pre-computation of target revision for all plugins before doing `PackChangedPre` in bulk before possibly applying an update), but I kind of like it more this way as it is more explicit of what's going on. If absolutely not acceptable, there might be some hacks to mitigate it at least in code action, but I'd keep it like this.
Diffstat (limited to 'runtime/ftplugin/python.vim')
0 files changed, 0 insertions, 0 deletions