summary refs log tree commit diff
path: root/pkgs/misc/vim-plugins
diff options
context:
space:
mode:
authorEvan Danaher <github@edanaher.net>2017-02-27 12:27:45 -0500
committerEvan Danaher <github@edanaher.net>2017-02-27 12:36:03 -0500
commitdcab4279083a4c04c5d64d40eda3a98e903085b9 (patch)
treec0b58aaa4aabb04fd0ddf47ef092b20e7630161d /pkgs/misc/vim-plugins
parent6018cf4a692b5e12e433cc332f8d8f79ccd57ba1 (diff)
downloadnixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.tar
nixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.tar.gz
nixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.tar.bz2
nixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.tar.lz
nixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.tar.xz
nixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.tar.zst
nixlib-dcab4279083a4c04c5d64d40eda3a98e903085b9.zip
vim-plugins: Add infrastructure for python[3]Dependencies.
This allows vim plugins to specify python dependencies required at
runtime, and they will be added to the python environment.
Diffstat (limited to 'pkgs/misc/vim-plugins')
-rw-r--r--pkgs/misc/vim-plugins/default.nix1
-rw-r--r--pkgs/misc/vim-plugins/vim-utils.nix23
2 files changed, 18 insertions, 6 deletions
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index c8872a40e561..01ed0d4d5f07 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -4,6 +4,7 @@
 , xkb_switch, rustracerd, fzf
 , python3, boost, icu
 , ycmd
+, pythonPackages, python3Packages
 , Cocoa ? null
 }:
 
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix
index 4b754f15c0fa..6fad58269c0d 100644
--- a/pkgs/misc/vim-plugins/vim-utils.nix
+++ b/pkgs/misc/vim-plugins/vim-utils.nix
@@ -150,6 +150,10 @@ vim_with_plugins can be installed like any other application within Nix.
 let
   inherit (stdenv) lib;
 
+  toNames = x:
+      if builtins.isString x then [x]
+      else (lib.optional (x ? name) x.name)
+            ++ (x.names or []);
   findDependenciesRecursively = {knownPlugins, names}:
 
     let depsOf = name: (builtins.getAttr name knownPlugins).dependencies or [];
@@ -211,11 +215,6 @@ let
       (let
         knownPlugins = vam.knownPlugins or vimPlugins;
 
-        toNames = x:
-            if builtins.isString x then [x]
-            else (lib.optional (x ? name) x.name)
-                  ++ (x.names or []);
-
         names = findDependenciesRecursively { inherit knownPlugins; names = lib.concatMap toNames vam.pluginDictionaries; };
 
         # Vim almost reads JSON, so eventually JSON support should be added to Nix
@@ -412,6 +411,19 @@ rec {
     configurePhase =":";
   } // a);
 
+  requiredPlugins = {
+    knownPlugins ? vimPlugins,
+    vam ? null,
+    pathogen ? null, ...
+  }:
+    let
+      pathogenNames = map (name: knownPlugins.${name}) (findDependenciesRecursively { inherit knownPlugins; names = pathogen.pluginNames; });
+      vamNames = findDependenciesRecursively { inherit knownPlugins; names = lib.concatMap toNames vam.pluginDictionaries; };
+      names = (lib.optionals (pathogen != null) pathogenNames) ++
+              (lib.optionals (vam != null) vamNames);
+    in
+      map (name: knownPlugins.${name}) names;
+
   # test cases:
   test_vim_with_vim_addon_nix_using_vam = vim_configurable.customize {
    name = "vim-with-vim-addon-nix-using-vam";
@@ -427,5 +439,4 @@ rec {
     name = "vim-with-vim-addon-nix";
     vimrcConfig.packages.myVimPackage.start = with vimPlugins; [ vim-addon-nix ];
   };
-
 }