zplug / zplug

:hibiscus: A next-generation plugin manager for zsh
MIT License
5.83k stars 231 forks source link

New version: zplug 3.0.0 #356

Open babarot opened 7 years ago

babarot commented 7 years ago

Problem Summary

What contents zplug should manage

It is also subject to gist, but we will not mention it here. Consider the as tag and the special case, but it's not about thefrom tag

Design philosophy

New interface plan

WIP

agross commented 7 years ago

Review load-order tag (defer tag ...): related to #314 Moreover, I can not agree to take a wide range like nice tag which was introduced in the past

The question that remains to be answered from my point of view is why you changed your mind w.r.t. to 39 nice values being OK for a whole year (I started using zplug at the end of 2015) to them being no longer OK.

Please keep in mind that taking away features will make the life of your users harder than necessary as they can no longer rely on features being there.

One way to get rid of nice/defer/whatever might be to load plugins in the order in which they are specified, perhaps with a single tag for stuff to load after compinit.


IMHO also worth discussing:

I have to admit that I find it very hard to follow zplug's versioning scheme. I think the zplug team should decide how the version numbers are incremented.

The current version scheme of major.minor.patch implies semver, at least to me. In the last months of using zplug I remember at least two breaking changes while upgrading patch releases.

Defman21 commented 7 years ago

One way to get rid of nice/defer/whatever might be to load plugins in the order in which they are specified, perhaps with a single tag for stuff to load after compinit.

I were wondering about that for a while :)

paulhybryant commented 7 years ago

I don't think a single tag to load things after compinit is sufficient though. Some plugin might have dependencies on other plugins. One such example is zsh-users/zaw. If you want to use cdr, zsh-cdr must be loaded before zaw.

I think a wider value of nice/defer can help with this, and if we really want a single tag, a tag that can specify the dependencies can handle these use cases as well, with 'compinit' as a special dependency.

sudoforge commented 7 years ago

It is also subject to gist, but we will not mention it here. Consider the as tag and the special case, but it's not about the from tag ... completion file (_*)

Major support for this. Currently, it does not seem possible to use zplug to manage arbitrary scripts as command completion scripts. This is problematic when using zplug to install, for example, the hub cli tool -- as the way the repository is structured does not play well with the assumptions zplug makes about completion commands - specifically, that they exist in their own directory.

Consider this, which works just fine:

source "$HOME/.zplug/init.zsh"
zplug "docker/compose", use:contrib/completion/zsh

And this, which is broken and not possible:

source "$HOME/.zplug/init.zsh"
zplug "github/hub", use:etc/hub.zsh_completion, rename-to:_hub
# impossible to source the script at etc/hub.zsh_completion as a completion script

Personally, I'd prefer if the as:completion feature was merged in prior to "v3" -- I mean, that's the whole point of using semantic versioning's minor version numbers, to incrementally add features and then declare a new major when the collection of features for that major version have been integrated.

Currently, because it is impossible to use zplug to manage completion scripts (instead of assuming that completion scripts exist in their own directory and are named properly, like in the docker/compose example above), I've had to resort to manually maintaining a completion directory and manually downloading and sourcing the script, which is obviously not ideal and is the entire reason I moved to using zplug in the first place.

raabf commented 7 years ago

Redesigned from-tag with intelligent URL-like syntax and a single plain git source (please see #437, it would be too long to write it here)

Vaesper commented 6 years ago

Why does nice even need a specific allowed range? Can it not simply iterate through the values from lowest found to highest found, while defaulting to 0? Is there a technical reason to limit this?

Cypher1 commented 6 months ago

@raabf Is this version still being worked on? Just wondering what the state of the project is. Thx