summaryrefslogtreecommitdiffstats
path: root/pkgs/misc
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2017-02-22 17:47:49 +0100
committerVladimír Čunát <vcunat@gmail.com>2017-02-22 17:47:49 +0100
commit145d3ea81c776f1598a1904ec7734fd5f8f6be36 (patch)
tree0503a47b7523de836f7ee01ecf625d932c2c422a /pkgs/misc
parentd6cff5783ec9f0536e1c19a82451987b4d2ecbe8 (diff)
parentb66ec6026cbbbd74902105b908e3f8f28431932c (diff)
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/vim-plugins/vim-utils.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix
index d714b290a905..4b754f15c0fa 100644
--- a/pkgs/misc/vim-plugins/vim-utils.nix
+++ b/pkgs/misc/vim-plugins/vim-utils.nix
@@ -17,6 +17,17 @@ vim-with-plugins in PATH:
set hidden
'';
+ # store your plugins in Vim packages
+ vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
+ # loaded on launch
+ start = [ youcompleteme fugitive ];
+ # manually loadable by calling `:packadd $plugin-name`
+ opt = [ phpCompletion elm-vim ];
+ # To automatically load a plugin when opening a filetype, add vimrc lines like:
+ # autocmd FileType php :packadd phpCompletion
+ };
+
+ # plugins can also be managed by VAM
vimrcConfig.vam.knownPlugins = pkgs.vimPlugins; # optional
vimrcConfig.vam.pluginDictionaries = [
# load always
@@ -154,6 +165,7 @@ let
in lib.uniqList { inputList = recurseNames [] names; };
vimrcFile = {
+ packages ? null,
vam ? null,
pathogen ? null,
customRC ? ""
@@ -253,6 +265,31 @@ let
call vam#Scripts(l, {})
'');
+ nativeImpl = lib.optionalString (packages != null)
+ (let
+ link = (packageName: dir: pluginPath: "ln -sf ${pluginPath}/share/vim-plugins/* $out/pack/${packageName}/${dir}");
+ packageLinks = (packageName: {start ? [], opt ? []}:
+ ["mkdir -p $out/pack/${packageName}/start"]
+ ++ (builtins.map (link packageName "start") start)
+ ++ ["mkdir -p $out/pack/${packageName}/opt"]
+ ++ (builtins.map (link packageName "opt") opt)
+ );
+ packDir = (packages:
+ stdenv.mkDerivation rec {
+ name = "vim-pack-dir";
+ src = ./.;
+ installPhase = lib.concatStringsSep
+ "\n"
+ (lib.flatten (lib.mapAttrsToList packageLinks packages));
+ }
+ );
+ in
+ ''
+ set packpath-=~/.vim/after
+ set packpath+=${packDir packages}
+ set packpath+=~/.vim/after
+ '');
+
# somebody else could provide these implementations
vundleImpl = "";
@@ -267,6 +304,7 @@ let
${pathogenImpl}
${vundleImpl}
${neobundleImpl}
+ ${nativeImpl}
filetype indent plugin on | syn on
@@ -385,4 +423,9 @@ rec {
vimrcConfig.pathogen.pluginNames = [ "vim-addon-nix" ];
};
+ test_vim_with_vim_addon_nix = vim_configurable.customize {
+ name = "vim-with-vim-addon-nix";
+ vimrcConfig.packages.myVimPackage.start = with vimPlugins; [ vim-addon-nix ];
+ };
+
}