vimUtils: add dependency logic to nativeImpl
nativeImpl previously simply ignored dependency information.
This commit is contained in:
parent
b352318cd1
commit
8e8a09bfc9
|
@ -48,7 +48,7 @@ neovim.override {
|
||||||
|
|
||||||
## Managing plugins with Vim packages
|
## Managing plugins with Vim packages
|
||||||
|
|
||||||
To store you plugins in Vim packages the following example can be used:
|
To store you plugins in Vim packages (the native vim plugin manager, see `:help packages`) the following example can be used:
|
||||||
|
|
||||||
```
|
```
|
||||||
vim_configurable.customize {
|
vim_configurable.customize {
|
||||||
|
@ -56,6 +56,8 @@ vim_configurable.customize {
|
||||||
# loaded on launch
|
# loaded on launch
|
||||||
start = [ youcompleteme fugitive ];
|
start = [ youcompleteme fugitive ];
|
||||||
# manually loadable by calling `:packadd $plugin-name`
|
# manually loadable by calling `:packadd $plugin-name`
|
||||||
|
# however, if a vim plugin has a dependency that is not explicitly listed in
|
||||||
|
# opt that dependency will always be added to start to avoid confusion.
|
||||||
opt = [ phpCompletion elm-vim ];
|
opt = [ phpCompletion elm-vim ];
|
||||||
# To automatically load a plugin when opening a filetype, add vimrc lines like:
|
# To automatically load a plugin when opening a filetype, add vimrc lines like:
|
||||||
# autocmd FileType php :packadd phpCompletion
|
# autocmd FileType php :packadd phpCompletion
|
||||||
|
@ -63,6 +65,7 @@ vim_configurable.customize {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`myVimPackage` is an arbitrary name for the generated package. You can choose any name you like.
|
||||||
For Neovim the syntax is:
|
For Neovim the syntax is:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -74,6 +77,8 @@ neovim.override {
|
||||||
packages.myVimPackage = with pkgs.vimPlugins; {
|
packages.myVimPackage = with pkgs.vimPlugins; {
|
||||||
# see examples below how to use custom packages
|
# see examples below how to use custom packages
|
||||||
start = [ ];
|
start = [ ];
|
||||||
|
# If a vim plugin has a dependency that is not explicitly listed in
|
||||||
|
# opt that dependency will always be added to start to avoid confusion.
|
||||||
opt = [ ];
|
opt = [ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -293,8 +293,18 @@ let
|
||||||
(let
|
(let
|
||||||
link = (packageName: dir: pluginPath: "ln -sf ${pluginPath}/share/vim-plugins/* $out/pack/${packageName}/${dir}");
|
link = (packageName: dir: pluginPath: "ln -sf ${pluginPath}/share/vim-plugins/* $out/pack/${packageName}/${dir}");
|
||||||
packageLinks = (packageName: {start ? [], opt ? []}:
|
packageLinks = (packageName: {start ? [], opt ? []}:
|
||||||
|
let
|
||||||
|
# `nativeImpl` expects packages to be derivations, not strings (as
|
||||||
|
# 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 null opt);
|
||||||
|
startWithDeps = findDependenciesRecursively null start;
|
||||||
|
in
|
||||||
["mkdir -p $out/pack/${packageName}/start"]
|
["mkdir -p $out/pack/${packageName}/start"]
|
||||||
++ (builtins.map (link packageName "start") start)
|
# To avoid confusion, even dependencies of optional plugins are added
|
||||||
|
# to `start` (except if they are explicitly listed as optional plugins).
|
||||||
|
++ (builtins.map (link packageName "start") (lib.unique (startWithDeps ++ depsOfOptionalPlugins)))
|
||||||
++ ["mkdir -p $out/pack/${packageName}/opt"]
|
++ ["mkdir -p $out/pack/${packageName}/opt"]
|
||||||
++ (builtins.map (link packageName "opt") opt)
|
++ (builtins.map (link packageName "opt") opt)
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue