mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 19:12:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   config,
 | |
|   pkgs,
 | |
|   lib,
 | |
|   ...
 | |
| }: let
 | |
|   inherit (lib.modules) mkRenamedOptionModule;
 | |
|   inherit (lib.options) mkEnableOption mkOption;
 | |
|   inherit (lib.types) nullOr str enum float;
 | |
|   inherit (lib.nvim.types) mkPluginSetupOption;
 | |
| 
 | |
|   cfg = config.vim.assistant.copilot;
 | |
| in {
 | |
|   imports = [
 | |
|     (mkRenamedOptionModule ["vim" "assistant" "copilot" "panel"] ["vim" "assistant" "copilot" "setupOpts" "panel"])
 | |
|     (mkRenamedOptionModule ["vim" "assistant" "copilot" "copilotNodeCommand"] ["vim" "assistant" "copilot" "setupOpts" "copilot_node_command"])
 | |
|     (mkRenamedOptionModule ["vim" "assistant" "copilot" "copilotNodePackage"] ["vim" "assistant" "copilot" "setupOpts" "copilot_node_command"])
 | |
|   ];
 | |
| 
 | |
|   options.vim.assistant.copilot = {
 | |
|     enable = mkEnableOption "GitHub Copilot AI assistant";
 | |
|     cmp.enable = mkEnableOption "nvim-cmp integration for GitHub Copilot";
 | |
| 
 | |
|     setupOpts = mkPluginSetupOption "Copilot" {
 | |
|       copilot_node_command = mkOption {
 | |
|         type = str;
 | |
|         default = "${lib.getExe pkgs.nodejs-slim}";
 | |
|         description = ''
 | |
|           The command that will be executed to initiate nodejs for GitHub Copilot.
 | |
|           Recommended to leave as default.
 | |
|         '';
 | |
|       };
 | |
|       panel = {
 | |
|         enabled = mkEnableOption "Completion Panel" // {default = !cfg.cmp.enable;};
 | |
|         layout = {
 | |
|           position = mkOption {
 | |
|             type = enum [
 | |
|               "bottom"
 | |
|               "top"
 | |
|               "left"
 | |
|               "right"
 | |
|             ];
 | |
|             default = "bottom";
 | |
|             description = "Panel position";
 | |
|           };
 | |
|           ratio = mkOption {
 | |
|             type = float;
 | |
|             default = 0.4;
 | |
|             description = "Panel size";
 | |
|           };
 | |
|         };
 | |
|       };
 | |
| 
 | |
|       suggestion = {
 | |
|         enabled = mkEnableOption "Suggestions" // {default = !cfg.cmp.enable;};
 | |
|         # keymap = { };
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     mappings = {
 | |
|       panel = {
 | |
|         jumpPrev = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "[[";
 | |
|           description = "Jump to previous suggestion";
 | |
|         };
 | |
| 
 | |
|         jumpNext = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "]]";
 | |
|           description = "Jump to next suggestion";
 | |
|         };
 | |
| 
 | |
|         accept = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "<CR>";
 | |
|           description = "Accept suggestion";
 | |
|         };
 | |
| 
 | |
|         refresh = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "gr";
 | |
|           description = "Refresh suggestions";
 | |
|         };
 | |
| 
 | |
|         open = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "<M-CR>";
 | |
|           description = "Open suggestions";
 | |
|         };
 | |
|       };
 | |
|       suggestion = {
 | |
|         accept = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "<M-l>";
 | |
|           description = "Accept suggetion";
 | |
|         };
 | |
| 
 | |
|         acceptWord = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = null;
 | |
|           description = "Accept next word";
 | |
|         };
 | |
| 
 | |
|         acceptLine = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = null;
 | |
|           description = "Accept next line";
 | |
|         };
 | |
| 
 | |
|         prev = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "<M-[>";
 | |
|           description = "Previous suggestion";
 | |
|         };
 | |
| 
 | |
|         next = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "<M-]>";
 | |
|           description = "Next suggestion";
 | |
|         };
 | |
| 
 | |
|         dismiss = mkOption {
 | |
|           type = nullOr str;
 | |
|           default = "<C-]>";
 | |
|           description = "Dismiss suggestion";
 | |
|         };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 | 
