diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2017-02-22 17:47:49 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2017-02-22 17:47:49 +0100 |
commit | 145d3ea81c776f1598a1904ec7734fd5f8f6be36 (patch) | |
tree | 0503a47b7523de836f7ee01ecf625d932c2c422a /pkgs/misc | |
parent | d6cff5783ec9f0536e1c19a82451987b4d2ecbe8 (diff) | |
parent | b66ec6026cbbbd74902105b908e3f8f28431932c (diff) |
Merge branch 'master' into staging
Diffstat (limited to 'pkgs/misc')
-rw-r--r-- | pkgs/misc/vim-plugins/vim-utils.nix | 43 |
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 ]; + }; + } |