mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-11-04 04:32:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			163 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{lib, ...}: let
 | 
						|
  inherit (lib.types) bool str enum either listOf;
 | 
						|
  inherit (lib.options) mkOption mkEnableOption literalExpression;
 | 
						|
  inherit (lib.nvim.types) mkPluginSetupOption;
 | 
						|
in {
 | 
						|
  options.vim.filetree.neo-tree = {
 | 
						|
    enable = mkEnableOption "filetree via neo-tree.nvim";
 | 
						|
 | 
						|
    # Permalink:
 | 
						|
    # https://github.com/nvim-neo-tree/neo-tree.nvim/blob/22e566aeb075c94f670f34077e05ba95190dfb4a/lua/neo-tree/defaults.lua
 | 
						|
    setupOpts = mkPluginSetupOption "neo-tree" {
 | 
						|
      add_blank_line_at_top = mkOption {
 | 
						|
        type = bool;
 | 
						|
        default = false;
 | 
						|
        description = ''
 | 
						|
          Whether to add a blank line at the top of the tree
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      auto_clean_after_session_restore = mkOption {
 | 
						|
        type = bool;
 | 
						|
        default = false;
 | 
						|
        description = ''
 | 
						|
          Whether to automatically clean up broken neo-tree buffers
 | 
						|
          saved in sessions
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      default_source = mkOption {
 | 
						|
        type = str;
 | 
						|
        default = "filesystem";
 | 
						|
        description = ''
 | 
						|
          You can choose a specific source.
 | 
						|
 | 
						|
          `last` here which indicates the last used source
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      enable_diagnostics = mkEnableOption "diagnostics" // {default = true;};
 | 
						|
      enable_git_status = mkEnableOption "git status" // {default = true;};
 | 
						|
      enable_modified_markers = mkEnableOption "markers for files with unsaved changes." // {default = true;};
 | 
						|
      enable_opened_markers =
 | 
						|
        mkEnableOption ''
 | 
						|
          tracking of opened files.
 | 
						|
 | 
						|
          Required for `components.name.highlight_opened_files`
 | 
						|
        ''
 | 
						|
        // {default = true;};
 | 
						|
 | 
						|
      enable_refresh_on_write =
 | 
						|
        mkEnableOption ''
 | 
						|
          Refresh the tree when a file is written.
 | 
						|
 | 
						|
          Only used if `use_libuv_file_watcher` is false.
 | 
						|
        ''
 | 
						|
        // {default = true;};
 | 
						|
 | 
						|
      enable_cursor_hijack = mkEnableOption ''
 | 
						|
        cursor hijacking.
 | 
						|
 | 
						|
        If enabled neotree will keep the cursor on the first letter of the filename when moving in the tree
 | 
						|
      '';
 | 
						|
 | 
						|
      git_status_async = mkEnableOption ''
 | 
						|
        async git status.
 | 
						|
 | 
						|
        This will make the git status check async and will not block the UI.
 | 
						|
      '';
 | 
						|
 | 
						|
      /*
 | 
						|
      git_status_async_options = mkOption {
 | 
						|
        description = "These options are for people with VERY large git repos";
 | 
						|
        type = submodule {
 | 
						|
          batch_size = mkOption {
 | 
						|
            type = int;
 | 
						|
            default = 1000;
 | 
						|
            description = "How many lines of git status results to process at a time";
 | 
						|
          };
 | 
						|
 | 
						|
          batch_delay = mkOption {
 | 
						|
            type = int;
 | 
						|
            default = 10;
 | 
						|
            description = "Delay, in ms, between batches. Spreads out the workload to let other processes run";
 | 
						|
          };
 | 
						|
 | 
						|
          max_lines = mkOption {
 | 
						|
            type = int;
 | 
						|
            default = 10000;
 | 
						|
            description = ''
 | 
						|
              How many lines of git status results to process.
 | 
						|
 | 
						|
              Anything after this will be dropped. Anything before this will be used.
 | 
						|
              The last items to be processed are the untracked files.
 | 
						|
            '';
 | 
						|
          };
 | 
						|
        };
 | 
						|
      };
 | 
						|
      */
 | 
						|
 | 
						|
      hide_root_node = mkOption {
 | 
						|
        type = bool;
 | 
						|
        default = false;
 | 
						|
        description = ''
 | 
						|
          Whether to hide the root node of the tree
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      retain_hidden_root_indent = mkOption {
 | 
						|
        type = bool;
 | 
						|
        default = false;
 | 
						|
        description = ''
 | 
						|
          Whether to retain the indent of the hidden root node
 | 
						|
 | 
						|
          IF the root node is hidden, keep the indentation anyhow.
 | 
						|
          This is needed if you use expanders because they render in the indent.
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      log_level = mkOption {
 | 
						|
        type = enum ["trace" "debug" "info" "warn" "error" "fatal"];
 | 
						|
        default = "info";
 | 
						|
        description = "Log level for the plugin.";
 | 
						|
      };
 | 
						|
 | 
						|
      log_to_file = mkOption {
 | 
						|
        type = either bool str;
 | 
						|
        default = false;
 | 
						|
        example = literalExpression "/tmp/neo-tree.log";
 | 
						|
        description = ''
 | 
						|
          Must be either a boolean or a path to your log file.
 | 
						|
 | 
						|
          Use :NeoTreeLogs to show the file
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      open_files_in_last_window = mkOption {
 | 
						|
        type = bool;
 | 
						|
        default = true;
 | 
						|
        description = ''
 | 
						|
          Whether to open files in the last window
 | 
						|
 | 
						|
          If disabled, neo-tree will open files in top left window
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      open_files_do_not_replace_types = mkOption {
 | 
						|
        type = listOf str;
 | 
						|
        default = ["terminal" "Trouble" "qf" "edgy"];
 | 
						|
        description = ''
 | 
						|
          A list of filetypes that should not be replaced when opening a file
 | 
						|
        '';
 | 
						|
      };
 | 
						|
 | 
						|
      filesystem = {
 | 
						|
        hijack_netrw_behavior = mkOption {
 | 
						|
          type = enum ["disabled" "open_default" "open_current"];
 | 
						|
          default = "open_default";
 | 
						|
          description = "Hijack Netrw behavior";
 | 
						|
        };
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |