Nikolay Pavlov wrote:
> 2016-02-09 15:38 GMT+03:00 Tony Mechelynck <[email protected]>:
> > On Tue, Feb 9, 2016 at 12:54 PM, Nikolay Aleksandrovich Pavlov
> > <[email protected]> wrote:
> >> 2016-02-09 13:03 GMT+03:00 Bram Moolenaar <[email protected]>:
> >>>
> >>> I had another idea. Currently when installing a plugin or support for
> >>> a language, the files are scattered over different directories under
> >>> $VIMRUNTIME. That makes it hard to update them.
> >>>
> >>> How about this: use $VIMRUNTIME/bundles. Below that will be the
> >>> directories that are usually directly under $VIMRUNTIME. For example,
> >>> netrw would be installed in the directories:
> >>> $VIMRUNTIME/bundles/netrw/plugin
> >>> $VIMRUNTIME/bundles/netrw/autoload
> >>> $VIMRUNTIME/bundles/netrw/syntax
> >>> It doesn't need an "indent" directory.
> >>>
> >>> That way the directory can be put under version control or updated in
> >>> any other way easily. E.g. unpacking a zip archive that you get from
> >>> Charles's site. And it's also easy to get rid of: delete the directory
> >>> below bundles. No need to hunt down the files that you unpacked before.
> >>>
> >>> This also makes it easier for plugin managers. No need to keep adding
> >>> more and more entries to 'runtimepath'.
> >>
> >> This way VAM, Vundle and other non-pathogen users will have move
> >> plugins out of ~/.vim/bundles. Neither of mentioned plugin managers
> >> put *all* plugins found in ~/.vim/bundles to &runtimepath, they put
> >> only those that were *requested by user*. This may also be used to
> >> conditionally enable plugins. Or to install plugins for a trial and
> >> use it only in one of many Vim instances during the trial.
> >>
> >> So direct consequence of this is that bundles directory could no
> >> longer be used by all (pathogen is not the one) plugin managers in a
> >> way they use it currently.
Do I understand that the problem is that the name "bundles" is already
used? We could just use another name. It's new so it doesn't really
matter.
> > What about having packages that can be enabled/disabled in some other
> > directory? (let's say $VIMRUNTIME/packages) — which would not be
> > checked for plugins, ftplugins, syntax scripts, keymaps, colorschemes,
> > etc.; then in order to enable package foobar, add in
> > $VIMRUNTIME/bundles a symlink foobar -> ../packages/foobar. Or even
> > simply move packages into and out of bundles/ (and, in this example,
> > out of and into packages) to enable or disable them? (N.B. I'm not
> > sure about modern Windows, but on Linux the "move" operation moves
> > only the directory entry when the directories moved-to and moved-from
> > are in the same filesystem aka the same disk partition.)
>
> I am reporting the current state. There are sure some workarounds (and
> moving directories is not a good one), but still such change will
> break.
>
> Issues with moving directories:
>
> 1. Least significant is that plugins need to be searched in different
> folders (symlinking: when removing a plugin one needs to care about).
> 2. And most significant: you cannot conditionally enable plugin from
> the vimrc for a subset of Vim instances using the same algorythm, so
> why bother writing two algorythms at all? I would just move managed
> plugins from ~/.vim/bundles and ignore new functionality.
I would assume in most cases installed plugins are active. If you do
need to disable one for whatever reason, it should be easy to use a
global variable. Just need a naming scheme. E.g. "disable_plugin_foo".
> I also have forgot one major downside: e.g. my translit3 plugin looks
> for its configuration by iterating over &runtimepath. There are many
> other plugins (especially snippet ones) which do the same thing
> (possibly using globpath(), but e.g. ultisnips iterates over
> &runtimepath). So plugins which contain configuration for such plugins
> (e.g. plugins with snippet collections) cannot be installed the new
> way without being useless.
Why not use <sfile> ? Iterating over runtimepath seems like a last
resort.
> I also saw ultisnips using globpath(&runtimepath, 'syntax/*.vim') for
> whatever reason. This code breaks.
I think it's fairly unusual for a plugin to find all other plugin stuff.
Where that is really needed a solution can be found. In the example,
also use globpath(&runtimepath, 'bundles/*/syntax/*.vim').
> Thus I would say that this idea is bad because it will break plugin
> managers and it will break plugins using globpath(&runtimepath) or
> similar techniques. It is also pointless: a big number of entries in
> &runtimepath does not slow down Vim much compared to the IO from
> iterating over that much directories (which will not change just
> because you use another method for getting a list of directories to
> iterate over), so the only benefit is that user can check that
> something is contained in his &runtimepath easier.
I disagree. If you are using a plugin manager it won't change anything.
Well, the plugin manager may take advantage of the new feature and a few
details may need to be updated. If you don't use a plugin manager then
this feature is a nice way of organising plugins.
--
Some of the well known MS-Windows errors:
EMULTI Multitasking attempted, system confused
EKEYBOARD Keyboard locked, try getting out of this one!
EXPLAIN Unexplained error, please tell us what happened
EFUTURE Reserved for our future mistakes
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.