anchor.diff:        (let
           knownPlugins = vam.knownPlugins or vimPlugins;
   
  -        plugins = findDependenciesRecursively knownPlugins (lib.concatMap vamDictToNames vam.pluginDictionaries);
  +        # plugins specified by the user
  +        specifiedPlugins = map (pluginToDrv knownPlugins) (lib.concatMap vamDictToNames vam.pluginDictionaries);
  +        # plugins with dependencies
  +        plugins = findDependenciesRecursively specifiedPlugins;
   
           # Vim almost reads JSON, so eventually JSON support should be added to Nix
           # TODO: proper quoting
  
positive.code:                      if vam != null && vam ? knownPlugins then vam.knownPlugins else
                       if pathogen != null && pathogen ? knownPlugins then pathogen.knownPlugins else
                       vimPlugins;
        pathogenPlugins = findDependenciesRecursively knownPlugins pathogen.pluginNames;
        vamPlugins = findDependenciesRecursively knownPlugins (lib.concatMap vamDictToNames vam.pluginDictionaries);
        nonNativePlugins = (lib.optionals (pathogen != null) pathogenPlugins)
                        ++ (lib.optionals (vam != null) vamPlugins)
                        ++ (lib.optionals (plug != null) plug.plugins);
  
negative.code:           # opposed to older implementations that have to maintain backwards
            # compatibility). Therefore we don't need to deal with "knownPlugins"
            # and can simply pass `null`.
            depsOfOptionalPlugins = lib.subtractLists opt (findDependenciesRecursively opt);
            startWithDeps = findDependenciesRecursively start;
          in
            ["mkdir -p $out/pack/${packageName}/start"]
            # To avoid confusion, even dependencies of optional plugins are added
  