-
-
Notifications
You must be signed in to change notification settings - Fork 360
Description
@stasjok has an implementation here: stasjok/nixvim@optimize-rtp (commits) (last two commits), where the rtp is optimized as a "performance" option.
In the codebase I need to check
wrapRcand ifperformance.optimizeRuntimePathis enabled. So it kind of strange to allow adding additional paths to rtp, but it works only if optimization is enabled and doesn't work otherwise...So my thoughts are, if there is an interest in this feature, it shouldn't be
performanceoptions. Nixvim should do it by default with additional options to allow adding extra paths to rtp and packpath. It gives several benefits:
- nixvim will be pure by default (only paths managed by nixvim will be in rtp by default), but user always can add additional paths with options. Some plugins, like treesitter, can add the paths there automatically when nix parser management is disabled for example.
- filesPlugin should never be added as a plugin. This is wrong to begin with. That's because user files should always be first in rtp. When filesPlugins is in the mix with other plugins, overriding plugin files may not work (depending on sorting order).
- I think that there should be a default internal variable with a path to user files. By default it point to filesPlugin, but other modules (wrappers) can override it with it's own path (home-manager should set it to xdg config path that is perfectly known to it without using raw lua, like I did now, nixos can override it with etc directory with configs and so on). Final rtp is:
configpath,plugins,nvimruntime,configafter.- Potentially we can manage rtp partially with wrapper args, in that case we can even drop
wrapRccompletely and just place init.lua to filesPlugin. But this is debatable, maybe managing rtp paths as the first lines in init.lua is enough plus allow users to add paths with raw lua. Or it can mixed approach: user config path is added with command line args (so that the directory with init.lua is known to neovim), other paths are managed in init.lua.In the end since all above as pretty large refactor and it should also change how things are managed right now, I put this task aside and decided to just change my lua code with a simple nix config in my config (in home-manager options I can get a static paths to my config files, to plugin path and to Nvim runtime, so no lua loops and matching needed, just plain vim.o.runtimepath assignment.
Related issues:
- We're conflating
wrapRcwith "isolating" the rtp - these are really separate issues.wrapRcshould just be about listing the init file in the wrapper args, using-u- Maybe we should always isolate the rtp instead of only doing it when
wrapRcis enabled? - Is there ever a scenario where it makes sense to use nixvim with an impure config?
- nixvim-print-init cannot show "extra files" content (i.e.
filesPlugin) - modules/output: cleanup + refactoring #1889
Ping: @traxys @GaetanLepage