{ lib, helpers, pkgs, config, ... }@args: let cmpOptions = import ./options { inherit lib helpers; }; in with lib; helpers.neovim-plugin.mkNeovimPlugin config { name = "cmp"; originalName = "nvim-cmp"; defaultPackage = pkgs.vimPlugins.nvim-cmp; maintainers = [ maintainers.GaetanLepage ]; # Introduced on 2024 February 21 # TODO: remove ~June 2024 imports = [ ./deprecations.nix ./sources ]; deprecateExtraOptions = true; extraOptions = { autoEnableSources = mkOption { type = types.bool; default = true; description = '' Scans the sources array and installs the plugins if they are known to nixvim. ''; }; inherit (cmpOptions) filetype cmdline; }; inherit (cmpOptions) settingsOptions settingsExample; callSetup = false; extraConfig = cfg: { warnings = optional (cfg.autoEnableSources && (helpers.nixvimTypes.isRawType cfg.settings.sources)) '' Nixvim (plugins.cmp): You have enabled `autoEnableSources` that tells Nixvim to automatically enable the source plugins with respect to the list of sources provided in `settings.sources`. However, the latter is proveded as a raw lua string which is not parseable by Nixvim. If you want to keep using raw lua for defining your sources: - Ensure you enable the relevant plugins manually in your configuration; - Dismiss this warning by explicitly setting `autoEnableSources` to `false`; ''; extraConfigLua = '' local cmp = require('cmp') cmp.setup(${helpers.toLuaObject cfg.settings}) '' + (concatStringsSep "\n" ( mapAttrsToList ( filetype: settings: "cmp.setup.filetype('${filetype}', ${helpers.toLuaObject settings})\n" ) cfg.filetype )) + (concatStringsSep "\n" ( mapAttrsToList ( cmdtype: settings: "cmp.setup.cmdline('${cmdtype}', ${helpers.toLuaObject settings})\n" ) cfg.cmdline )); # If autoEnableSources is set to true, figure out which are provided by the user # and enable the corresponding plugins. plugins = (import ./cmp-helpers.nix args).autoInstallSourcePluginsModule cfg; }; }