diff options
Diffstat (limited to 'pkgs/misc/vim-plugins/vim-utils.nix')
-rw-r--r-- | pkgs/misc/vim-plugins/vim-utils.nix | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/pkgs/misc/vim-plugins/vim-utils.nix b/pkgs/misc/vim-plugins/vim-utils.nix index 16c14b32218..d745198e6a4 100644 --- a/pkgs/misc/vim-plugins/vim-utils.nix +++ b/pkgs/misc/vim-plugins/vim-utils.nix @@ -250,13 +250,14 @@ let # plugins with dependencies plugins = findDependenciesRecursively specifiedPlugins; - # Vim almost reads JSON, so eventually JSON support should be added to Nix - # TODO: proper quoting - toNix = x: - if (builtins.isString x) then "'${x}'" - else if builtins.isAttrs x && builtins ? out then toNix x # a derivation - else if builtins.isAttrs x then "{${lib.concatStringsSep ", " (lib.mapAttrsToList (n: v: "${toNix n}: ${toNix v}") x)}}" - else if builtins.isList x then "[${lib.concatMapStringsSep ", " toNix x}]" + # Convert scalars, lists, and attrs, to VimL equivalents + toVimL = x: + if builtins.isString x then "'${lib.replaceStrings [ "\n" "'" ] [ "\n\\ " "''" ] x}'" + else if builtins.isAttrs x && builtins ? out then toVimL x # a derivation + else if builtins.isAttrs x then "{${lib.concatStringsSep ", " (lib.mapAttrsToList (n: v: "${toVimL n}: ${toVimL v}") x)}}" + else if builtins.isList x then "[${lib.concatMapStringsSep ", " toVimL x}]" + else if builtins.isInt x || builtins.isFloat x then builtins.toString x + else if builtins.isBool x then (if x then "1" else "0") else throw "turning ${lib.generators.toPretty {} x} into a VimL thing not implemented yet"; in assert builtins.hasAttr "vim-addon-manager" knownPlugins; @@ -293,9 +294,9 @@ let endif endif - " tell vam about which plugins to load when: + " tell vam which plugins to load, and when: let l = [] - ${lib.concatMapStrings (p: "call add(l, {'name': '${p.pname}'})\n") plugins} + ${lib.concatMapStrings (p: "call add(l, ${toVimL p})\n") vam.pluginDictionaries} call vam#Scripts(l, {}) ''); @@ -330,9 +331,8 @@ let ); in '' - set packpath-=~/.vim/after - set packpath+=${packDir packages} - set packpath+=~/.vim/after + set packpath^=${packDir packages} + set runtimepath^=${packDir packages} filetype indent plugin on | syn on ''); |