Merge pull request #184364 from teto/vim-merge-cmds
This commit is contained in:
commit
60b0ef2931
5 changed files with 69 additions and 128 deletions
|
@ -1,7 +1 @@
|
||||||
" configuration generated by NIX
|
|
||||||
set nocompatible
|
|
||||||
|
|
||||||
set packpath^=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-vim-pack-dir
|
|
||||||
set runtimepath^=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-vim-pack-dir
|
|
||||||
|
|
||||||
:help ale
|
:help ale
|
||||||
|
|
|
@ -86,9 +86,11 @@ rec {
|
||||||
|
|
||||||
nvim_with_plug = neovim.override {
|
nvim_with_plug = neovim.override {
|
||||||
extraName = "-with-plug";
|
extraName = "-with-plug";
|
||||||
configure.plug.plugins = with pkgs.vimPlugins; [
|
configure.packages.plugins = with pkgs.vimPlugins; {
|
||||||
(base16-vim.overrideAttrs(old: { pname = old.pname + "-unique-for-tests-please-dont-use"; }))
|
start = [
|
||||||
];
|
(base16-vim.overrideAttrs(old: { pname = old.pname + "-unique-for-tests-please-dont-use"; }))
|
||||||
|
];
|
||||||
|
};
|
||||||
configure.customRC = ''
|
configure.customRC = ''
|
||||||
color base16-tomorrow-night
|
color base16-tomorrow-night
|
||||||
set background=dark
|
set background=dark
|
||||||
|
@ -123,7 +125,7 @@ rec {
|
||||||
});
|
});
|
||||||
|
|
||||||
force-nowrap = runTest nvimDontWrap ''
|
force-nowrap = runTest nvimDontWrap ''
|
||||||
! grep "-u" ${nvimDontWrap}/bin/nvim
|
! grep -F -- ' -u' ${nvimDontWrap}/bin/nvim
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nvim_via_override-test = runTest nvim_via_override ''
|
nvim_via_override-test = runTest nvim_via_override ''
|
||||||
|
@ -154,12 +156,6 @@ rec {
|
||||||
configure.packages.foo.start = with vimPlugins; [ deoplete-nvim ];
|
configure.packages.foo.start = with vimPlugins; [ deoplete-nvim ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# only neovim makes use of `requiredPlugins`, test this here
|
|
||||||
test_nvim_with_vim_nix_using_pathogen = neovim.override {
|
|
||||||
extraName = "-pathogen";
|
|
||||||
configure.pathogen.pluginNames = [ "vim-nix" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
nvimWithLuaPackages = wrapNeovim2 "-with-lua-packages" (makeNeovimConfig {
|
nvimWithLuaPackages = wrapNeovim2 "-with-lua-packages" (makeNeovimConfig {
|
||||||
extraLuaPackages = ps: [ps.mpack];
|
extraLuaPackages = ps: [ps.mpack];
|
||||||
customRC = ''
|
customRC = ''
|
||||||
|
|
|
@ -11,21 +11,18 @@
|
||||||
, wrapNeovimUnstable
|
, wrapNeovimUnstable
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
# returns everything needed for the caller to wrap its own neovim:
|
/* returns everything needed for the caller to wrap its own neovim:
|
||||||
# - the generated content of the future init.vim
|
- the generated content of the future init.vim
|
||||||
# - the arguments to wrap neovim with
|
- the arguments to wrap neovim with
|
||||||
# The caller is responsible for writing the init.vim and adding it to the wrapped
|
The caller is responsible for writing the init.vim and adding it to the wrapped
|
||||||
# arguments (["-u" writeText "init.vim" GENERATEDRC)]).
|
arguments (["-u" writeText "init.vim" GENERATEDRC)]).
|
||||||
# This makes it possible to write the config anywhere: on a per-project basis
|
This makes it possible to write the config anywhere: on a per-project basis
|
||||||
# .nvimrc or in $XDG_CONFIG_HOME/nvim/init.vim to avoid sideeffects.
|
.nvimrc or in $XDG_CONFIG_HOME/nvim/init.vim to avoid sideeffects.
|
||||||
# Indeed, note that wrapping with `-u init.vim` has sideeffects like .nvimrc wont be loaded
|
Indeed, note that wrapping with `-u init.vim` has sideeffects like .nvimrc wont be loaded
|
||||||
# anymore, $MYVIMRC wont be set etc
|
anymore, $MYVIMRC wont be set etc
|
||||||
|
*/
|
||||||
makeNeovimConfig =
|
makeNeovimConfig =
|
||||||
{
|
{ withPython3 ? true
|
||||||
withPython2 ? false
|
|
||||||
/* the function you would have passed to python.withPackages */
|
|
||||||
, extraPython2Packages ? (_: [ ])
|
|
||||||
, withPython3 ? true
|
|
||||||
/* the function you would have passed to python3.withPackages */
|
/* the function you would have passed to python3.withPackages */
|
||||||
, extraPython3Packages ? (_: [ ])
|
, extraPython3Packages ? (_: [ ])
|
||||||
, withNodeJs ? false
|
, withNodeJs ? false
|
||||||
|
@ -36,10 +33,8 @@ let
|
||||||
# expects a list of plugin configuration
|
# expects a list of plugin configuration
|
||||||
# expects { plugin=far-vim; config = "let g:far#source='rg'"; optional = false; }
|
# expects { plugin=far-vim; config = "let g:far#source='rg'"; optional = false; }
|
||||||
, plugins ? []
|
, plugins ? []
|
||||||
# forwarded to configure.customRC
|
# custom viml config appended after plugin-specific config
|
||||||
, customRC ? ""
|
, customRC ? ""
|
||||||
# same values as in vimUtils.vimrcContent
|
|
||||||
, configure ? { }
|
|
||||||
|
|
||||||
# for forward compability, when adding new environments, haskell etc.
|
# for forward compability, when adding new environments, haskell etc.
|
||||||
, ...
|
, ...
|
||||||
|
@ -54,25 +49,20 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
# transform all plugins into an attrset
|
# transform all plugins into an attrset
|
||||||
pluginsNormalized = map (x: if x ? plugin then { optional = false; } // x else { plugin = x; optional = false;}) plugins;
|
# { optional = bool; plugin = package; dest = filename; }
|
||||||
|
pluginsNormalized = map (x: if x ? plugin then { dest = "init.vim"; optional = false; } // x else { plugin = x; optional = false;}) plugins;
|
||||||
|
|
||||||
|
|
||||||
configurePatched = configure // {
|
|
||||||
customRC = pluginRc + customRC + (configure.customRC or "");
|
|
||||||
};
|
|
||||||
|
|
||||||
# A function to get the configuration string (if any) from an element of 'plugins'
|
pluginRC = lib.concatMapStrings (p: p.config or "") pluginsNormalized;
|
||||||
pluginConfig = p:
|
|
||||||
if (p.config or "") != "" then ''
|
|
||||||
" ${p.plugin.pname or p.plugin.name} {{{
|
|
||||||
${p.config}
|
|
||||||
" }}}
|
|
||||||
'' else "";
|
|
||||||
|
|
||||||
pluginRc = lib.concatMapStrings pluginConfig pluginsNormalized;
|
pluginsPartitioned = lib.partition (x: x.optional == true) pluginsNormalized;
|
||||||
|
requiredPlugins = vimUtils.requiredPluginsForPackage myVimPackage;
|
||||||
requiredPlugins = vimUtils.requiredPlugins configurePatched;
|
|
||||||
getDeps = attrname: map (plugin: plugin.${attrname} or (_: [ ]));
|
getDeps = attrname: map (plugin: plugin.${attrname} or (_: [ ]));
|
||||||
|
myVimPackage = {
|
||||||
|
start = map (x: x.plugin) pluginsPartitioned.wrong;
|
||||||
|
opt = map (x: x.plugin) pluginsPartitioned.right;
|
||||||
|
};
|
||||||
|
|
||||||
pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
|
pluginPython3Packages = getDeps "python3Dependencies" requiredPlugins;
|
||||||
python3Env = python3Packages.python.withPackages (ps:
|
python3Env = python3Packages.python.withPackages (ps:
|
||||||
|
@ -102,12 +92,16 @@ let
|
||||||
let
|
let
|
||||||
binPath = lib.makeBinPath (lib.optionals withRuby [ rubyEnv ] ++ lib.optionals withNodeJs [ nodejs ]);
|
binPath = lib.makeBinPath (lib.optionals withRuby [ rubyEnv ] ++ lib.optionals withNodeJs [ nodejs ]);
|
||||||
|
|
||||||
flags = lib.concatLists (lib.mapAttrsToList (
|
hostProviderViml = lib.mapAttrsToList genProviderSettings hostprog_check_table;
|
||||||
prog: withProg: [
|
|
||||||
"--cmd" (genProviderSettings prog withProg)
|
# as expected by packdir
|
||||||
]
|
packDirArgs.myNeovimPackages = myVimPackage;
|
||||||
)
|
|
||||||
hostprog_check_table);
|
# vim accepts a limited number of commands so we join them all
|
||||||
|
flags = [
|
||||||
|
"--cmd" (lib.intersperse "|" hostProviderViml)
|
||||||
|
"--cmd" "set packpath^=${vimUtils.packDir packDirArgs}"
|
||||||
|
];
|
||||||
in
|
in
|
||||||
[
|
[
|
||||||
"--inherit-argv0" "--add-flags" (lib.escapeShellArgs flags)
|
"--inherit-argv0" "--add-flags" (lib.escapeShellArgs flags)
|
||||||
|
@ -120,11 +114,10 @@ let
|
||||||
"--prefix" "LUA_CPATH" ";" (neovim-unwrapped.lua.pkgs.lib.genLuaCPathAbsStr luaEnv)
|
"--prefix" "LUA_CPATH" ";" (neovim-unwrapped.lua.pkgs.lib.genLuaCPathAbsStr luaEnv)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
manifestRc = vimUtils.vimrcContent ({ customRC = ""; }) ;
|
||||||
manifestRc = vimUtils.vimrcContent (configurePatched // { customRC = ""; }) ;
|
# we call vimrcContent without 'packages' to avoid the init.vim generation
|
||||||
neovimRcContent = vimUtils.vimrcContent configurePatched;
|
neovimRcContent = vimUtils.vimrcContent ({ beforePlugins = ""; customRC = pluginRC + customRC; packages = null; });
|
||||||
in
|
in
|
||||||
assert withPython2 -> throw "Python2 support has been removed from neovim, please remove withPython2 and extraPython2Packages.";
|
|
||||||
|
|
||||||
builtins.removeAttrs args ["plugins"] // {
|
builtins.removeAttrs args ["plugins"] // {
|
||||||
wrapperArgs = makeWrapperArgs;
|
wrapperArgs = makeWrapperArgs;
|
||||||
|
@ -144,10 +137,9 @@ let
|
||||||
"let g:loaded_${prog}_provider=0"
|
"let g:loaded_${prog}_provider=0"
|
||||||
;
|
;
|
||||||
|
|
||||||
# to keep backwards compatibility
|
# to keep backwards compatibility for people using neovim.override
|
||||||
legacyWrapper = neovim: {
|
legacyWrapper = neovim: {
|
||||||
extraMakeWrapperArgs ? ""
|
extraMakeWrapperArgs ? ""
|
||||||
, withPython ? false
|
|
||||||
/* the function you would have passed to python.withPackages */
|
/* the function you would have passed to python.withPackages */
|
||||||
, extraPythonPackages ? (_: [])
|
, extraPythonPackages ? (_: [])
|
||||||
/* the function you would have passed to python.withPackages */
|
/* the function you would have passed to python.withPackages */
|
||||||
|
@ -162,22 +154,25 @@ let
|
||||||
, extraName ? ""
|
, extraName ? ""
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
/* for compatibility with passing extraPythonPackages as a list; added 2018-07-11 */
|
|
||||||
compatFun = funOrList: (if builtins.isList funOrList then
|
# we convert from the old configure.format to
|
||||||
(_: lib.warn "passing a list as extraPythonPackages to the neovim wrapper is deprecated, pass a function as to python.withPackages instead" funOrList)
|
plugins = if builtins.hasAttr "plug" configure then
|
||||||
else funOrList);
|
throw "The neovim legacy wrapper doesn't support configure.plug anymore, please setup your plugins via 'configure.packages' instead"
|
||||||
|
else
|
||||||
|
lib.flatten (lib.mapAttrsToList genPlugin (configure.packages or {}));
|
||||||
|
genPlugin = packageName: {start ? [], opt?[]}:
|
||||||
|
start ++ opt;
|
||||||
|
|
||||||
res = makeNeovimConfig {
|
res = makeNeovimConfig {
|
||||||
inherit withPython3;
|
inherit withPython3;
|
||||||
extraPython3Packages = compatFun extraPython3Packages;
|
inherit extraPython3Packages;
|
||||||
inherit extraLuaPackages;
|
inherit extraLuaPackages;
|
||||||
inherit withNodeJs withRuby viAlias vimAlias;
|
inherit withNodeJs withRuby viAlias vimAlias;
|
||||||
inherit configure;
|
customRC = configure.customRC or "";
|
||||||
|
inherit plugins;
|
||||||
inherit extraName;
|
inherit extraName;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
assert withPython -> throw "Python2 support has been removed from neovim, please remove withPython and extraPythonPackages.";
|
|
||||||
|
|
||||||
wrapNeovimUnstable neovim (res // {
|
wrapNeovimUnstable neovim (res // {
|
||||||
wrapperArgs = lib.escapeShellArgs res.wrapperArgs + " " + extraMakeWrapperArgs;
|
wrapperArgs = lib.escapeShellArgs res.wrapperArgs + " " + extraMakeWrapperArgs;
|
||||||
wrapRc = (configure != {});
|
wrapRc = (configure != {});
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
, runCommand, makeWrapper
|
, runCommand, makeWrapper
|
||||||
, nix-prefetch-hg, nix-prefetch-git
|
, nix-prefetch-hg, nix-prefetch-git
|
||||||
, fetchFromGitHub, runtimeShell
|
, fetchFromGitHub, runtimeShell
|
||||||
, hasLuaModule
|
|
||||||
, python3
|
, python3
|
||||||
, callPackage, makeSetupHook
|
, callPackage, makeSetupHook
|
||||||
}:
|
}:
|
||||||
|
@ -52,8 +51,6 @@ this to your .vimrc should make most plugins work:
|
||||||
set rtp+=~/.nix-profile/share/vim-plugins/youcompleteme
|
set rtp+=~/.nix-profile/share/vim-plugins/youcompleteme
|
||||||
" or for p in ["youcompleteme"] | exec 'set rtp+=~/.nix-profile/share/vim-plugins/'.p | endfor
|
" or for p in ["youcompleteme"] | exec 'set rtp+=~/.nix-profile/share/vim-plugins/'.p | endfor
|
||||||
|
|
||||||
which is what the [VAM]/pathogen solutions above basically do.
|
|
||||||
|
|
||||||
Learn about about plugin Vim plugin mm managers at
|
Learn about about plugin Vim plugin mm managers at
|
||||||
http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html.
|
http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html.
|
||||||
|
|
||||||
|
@ -168,16 +165,13 @@ let
|
||||||
|
|
||||||
rtpPath = ".";
|
rtpPath = ".";
|
||||||
|
|
||||||
# Generates a packpath folder as expected by vim
|
/* Generates a packpath folder as expected by vim
|
||||||
|
Example:
|
||||||
|
packDir (myVimPackage.{ start = [ vimPlugins.vim-fugitive ]; opt = [] })
|
||||||
|
=> "/nix/store/xxxxx-pack-dir"
|
||||||
|
*/
|
||||||
packDir = packages:
|
packDir = packages:
|
||||||
let
|
let
|
||||||
# dir is "start" or "opt"
|
|
||||||
linkLuaPlugin = plugin: packageName: dir: ''
|
|
||||||
mkdir -p $out/pack/${packageName}/${dir}/${plugin.pname}/lua
|
|
||||||
ln -sf ${plugin}/share/lua/5.1/* $out/pack/${packageName}/${dir}/${plugin.pname}/lua
|
|
||||||
ln -sf ${plugin}/${plugin.pname}-${plugin.version}-rocks/${plugin.pname}/${plugin.version}/* $out/pack/${packageName}/${dir}/${plugin.pname}/
|
|
||||||
'';
|
|
||||||
|
|
||||||
linkVimlPlugin = plugin: packageName: dir: ''
|
linkVimlPlugin = plugin: packageName: dir: ''
|
||||||
mkdir -p $out/pack/${packageName}/${dir}
|
mkdir -p $out/pack/${packageName}/${dir}
|
||||||
if test -e "$out/pack/${packageName}/${dir}/${lib.getName plugin}"; then
|
if test -e "$out/pack/${packageName}/${dir}/${lib.getName plugin}"; then
|
||||||
|
@ -242,8 +236,8 @@ let
|
||||||
*/
|
*/
|
||||||
vimrcContent = {
|
vimrcContent = {
|
||||||
packages ? null,
|
packages ? null,
|
||||||
vam ? null,
|
vam ? null, # deprecated
|
||||||
pathogen ? null,
|
pathogen ? null, # deprecated
|
||||||
plug ? null,
|
plug ? null,
|
||||||
beforePlugins ? ''
|
beforePlugins ? ''
|
||||||
" configuration generated by NIX
|
" configuration generated by NIX
|
||||||
|
@ -253,19 +247,6 @@ let
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
/* pathogen mostly can set &rtp at startup time. Deprecated.
|
|
||||||
*/
|
|
||||||
pathogenImpl = let
|
|
||||||
knownPlugins = pathogen.knownPlugins or vimPlugins;
|
|
||||||
|
|
||||||
plugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) pathogen.pluginNames);
|
|
||||||
|
|
||||||
pathogenPackages.pathogen = {
|
|
||||||
start = plugins;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
nativeImpl pathogenPackages;
|
|
||||||
|
|
||||||
/* vim-plug is an extremely popular vim plugin manager.
|
/* vim-plug is an extremely popular vim plugin manager.
|
||||||
*/
|
*/
|
||||||
plugImpl =
|
plugImpl =
|
||||||
|
@ -278,23 +259,7 @@ let
|
||||||
call plug#end()
|
call plug#end()
|
||||||
'';
|
'';
|
||||||
|
|
||||||
/*
|
# vim-addon-manager = VAM (deprecated)
|
||||||
vim-addon-manager = VAM
|
|
||||||
|
|
||||||
* maps names to plugin location
|
|
||||||
|
|
||||||
* manipulates &rtp at startup time
|
|
||||||
or when Vim has been running for a while
|
|
||||||
|
|
||||||
* can activate plugins laziy (eg when loading a specific filetype)
|
|
||||||
|
|
||||||
* knows about vim plugin dependencies (addon-info.json files)
|
|
||||||
|
|
||||||
* still is minimalistic (only loads one file), the "check out" code it also
|
|
||||||
has only gets loaded when a plugin is requested which is not found on disk
|
|
||||||
yet
|
|
||||||
|
|
||||||
*/
|
|
||||||
vamImpl =
|
vamImpl =
|
||||||
let
|
let
|
||||||
knownPlugins = vam.knownPlugins or vimPlugins;
|
knownPlugins = vam.knownPlugins or vimPlugins;
|
||||||
|
@ -314,7 +279,7 @@ let
|
||||||
]
|
]
|
||||||
++ lib.optional (vam != null) (lib.warn "'vam' attribute is deprecated. Use 'packages' instead in your vim configuration" vamImpl)
|
++ lib.optional (vam != null) (lib.warn "'vam' attribute is deprecated. Use 'packages' instead in your vim configuration" vamImpl)
|
||||||
++ lib.optional (packages != null && packages != []) (nativeImpl packages)
|
++ lib.optional (packages != null && packages != []) (nativeImpl packages)
|
||||||
++ lib.optional (pathogen != null) (lib.warn "'pathogen' attribute is deprecated. Use 'packages' instead in your vim configuration" pathogenImpl)
|
++ lib.optional (pathogen != null) (throw "pathogen is now unsupported, replace `pathogen = {}` with `packages.home = { start = []; }`")
|
||||||
++ lib.optional (plug != null) plugImpl
|
++ lib.optional (plug != null) plugImpl
|
||||||
++ [ customRC ];
|
++ [ customRC ];
|
||||||
|
|
||||||
|
@ -444,27 +409,20 @@ rec {
|
||||||
# used to figure out which python dependencies etc. neovim needs
|
# used to figure out which python dependencies etc. neovim needs
|
||||||
requiredPlugins = {
|
requiredPlugins = {
|
||||||
packages ? {},
|
packages ? {},
|
||||||
givenKnownPlugins ? null,
|
|
||||||
vam ? null,
|
|
||||||
pathogen ? null,
|
|
||||||
plug ? null, ...
|
plug ? null, ...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
# This is probably overcomplicated, but I don't understand this well enough to know what's necessary.
|
|
||||||
knownPlugins = if givenKnownPlugins != null then givenKnownPlugins else
|
|
||||||
if vam != null && vam ? knownPlugins then vam.knownPlugins else
|
|
||||||
if pathogen != null && pathogen ? knownPlugins then pathogen.knownPlugins else
|
|
||||||
vimPlugins;
|
|
||||||
pathogenPlugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) pathogen.pluginNames);
|
|
||||||
vamPlugins = findDependenciesRecursively (map (pluginToDrv knownPlugins) (lib.concatMap vamDictToNames vam.pluginDictionaries));
|
|
||||||
nonNativePlugins = (lib.optionals (pathogen != null) pathogenPlugins)
|
|
||||||
++ (lib.optionals (vam != null) vamPlugins)
|
|
||||||
++ (lib.optionals (plug != null) plug.plugins);
|
|
||||||
nativePluginsConfigs = lib.attrsets.attrValues packages;
|
nativePluginsConfigs = lib.attrsets.attrValues packages;
|
||||||
nativePlugins = lib.concatMap ({start?[], opt?[], knownPlugins?vimPlugins}: start++opt) nativePluginsConfigs;
|
nonNativePlugins = (lib.optionals (plug != null) plug.plugins);
|
||||||
|
nativePlugins = lib.concatMap (requiredPluginsForPackage) nativePluginsConfigs;
|
||||||
in
|
in
|
||||||
nativePlugins ++ nonNativePlugins;
|
nativePlugins ++ nonNativePlugins;
|
||||||
|
|
||||||
|
|
||||||
|
# figures out which python dependencies etc. is needed for one vim package
|
||||||
|
requiredPluginsForPackage = { start ? [], opt ? []}:
|
||||||
|
start ++ opt;
|
||||||
|
|
||||||
toVimPlugin = drv:
|
toVimPlugin = drv:
|
||||||
drv.overrideAttrs(oldAttrs: {
|
drv.overrideAttrs(oldAttrs: {
|
||||||
# dont move the "doc" folder since vim expects it
|
# dont move the "doc" folder since vim expects it
|
||||||
|
|
|
@ -35789,9 +35789,7 @@ with pkgs;
|
||||||
|
|
||||||
viewnior = callPackage ../applications/graphics/viewnior { };
|
viewnior = callPackage ../applications/graphics/viewnior { };
|
||||||
|
|
||||||
vimUtils = callPackage ../applications/editors/vim/plugins/vim-utils.nix {
|
vimUtils = callPackage ../applications/editors/vim/plugins/vim-utils.nix { };
|
||||||
inherit (lua51Packages) hasLuaModule;
|
|
||||||
};
|
|
||||||
|
|
||||||
vimPlugins = recurseIntoAttrs (callPackage ../applications/editors/vim/plugins {
|
vimPlugins = recurseIntoAttrs (callPackage ../applications/editors/vim/plugins {
|
||||||
llvmPackages = llvmPackages_6;
|
llvmPackages = llvmPackages_6;
|
||||||
|
|
Loading…
Reference in a new issue