mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-11-03 20:22:21 +00:00 
			
		
		
		
	neovim/global: begin adding vim.diagnostics.config() options
		
	This commit is contained in:
		
					parent
					
						
							
								cb57d3d417
							
						
					
				
			
			
				commit
				
					
						7d077f43f7
					
				
			
		
					 4 changed files with 157 additions and 30 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,12 @@
 | 
			
		|||
{lib}: {
 | 
			
		||||
  imports = lib.concatLists [
 | 
			
		||||
{lib, ...}: let
 | 
			
		||||
  inherit (lib.lists) concatLists;
 | 
			
		||||
  inherit (lib.filesystem) listFilesRecursive;
 | 
			
		||||
in {
 | 
			
		||||
  imports = concatLists [
 | 
			
		||||
    # Configuration options for Neovim UI
 | 
			
		||||
    (lib.filesystem.listFilesRecursive ./ui)
 | 
			
		||||
    (listFilesRecursive ./ui)
 | 
			
		||||
 | 
			
		||||
    # vim.diagnostics
 | 
			
		||||
    [./diagnostics.nix]
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										115
									
								
								modules/neovim/global/diagnostics.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								modules/neovim/global/diagnostics.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,115 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}: let
 | 
			
		||||
  inherit (lib.options) mkOption mkEnableOption;
 | 
			
		||||
  inherit (lib.types) str bool enum either;
 | 
			
		||||
in {
 | 
			
		||||
  options.vim.diagnostics = {
 | 
			
		||||
    virtual_text = mkOption {
 | 
			
		||||
      type = bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Whether to use virtual text for diagnostics.
 | 
			
		||||
 | 
			
		||||
        If multiple diagnostics are set for a namespace, one
 | 
			
		||||
        prefix per diagnostic + the last diagnostic message
 | 
			
		||||
        are shown.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    update_in_insert = mkOption {
 | 
			
		||||
      type = bool;
 | 
			
		||||
      default = false;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Whether to update diagnostics in insert mode.
 | 
			
		||||
 | 
			
		||||
        This is useful for slow diagnostics sources, but can
 | 
			
		||||
        also cause lag in insert mode.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    underline = mkOption {
 | 
			
		||||
      type = bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Whether to underline diagnostics.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    severity_sort = mkOption {
 | 
			
		||||
      type = bool;
 | 
			
		||||
      default = false;
 | 
			
		||||
      description = ''
 | 
			
		||||
        Whether to sort diagnostics by severity.
 | 
			
		||||
 | 
			
		||||
        This affects the order in which signs and
 | 
			
		||||
        virtual text are displayed. When true, higher
 | 
			
		||||
        severities are displayed before lower severities (e.g.
 | 
			
		||||
        ERROR is displayed before WARN)
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    float = {
 | 
			
		||||
      focusable = mkOption {
 | 
			
		||||
        type = bool;
 | 
			
		||||
        default = false;
 | 
			
		||||
        description = ''
 | 
			
		||||
          Whether the floating window is focusable.
 | 
			
		||||
          When true, the floating window can be focused and
 | 
			
		||||
          interacted with. When false, the floating window is
 | 
			
		||||
          not focusable and will not receive input.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      border = mkOption {
 | 
			
		||||
        type = enum ["none" "single" "double" "rounded" "solid" "shadow"];
 | 
			
		||||
        default = config.vim.ui.border.globalStyle;
 | 
			
		||||
        description = ''
 | 
			
		||||
          The border style of the floating window.
 | 
			
		||||
 | 
			
		||||
          Possible values:
 | 
			
		||||
            - none
 | 
			
		||||
            - single
 | 
			
		||||
            - double
 | 
			
		||||
            - rounded
 | 
			
		||||
            - solid
 | 
			
		||||
            - shadow
 | 
			
		||||
 | 
			
		||||
          See `:h nvim_open_win` for the available border
 | 
			
		||||
          styles and their definitions.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      source = mkOption {
 | 
			
		||||
        type = either bool (enum ["always" "if_many"]);
 | 
			
		||||
        default = "auto";
 | 
			
		||||
        description = ''
 | 
			
		||||
            The source of the floating window.
 | 
			
		||||
            Possible values:
 | 
			
		||||
          - auto: Use the same source as the diagnostics
 | 
			
		||||
            window.
 | 
			
		||||
          - window: Use the window source.
 | 
			
		||||
          - buffer: Use the buffer source.
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      prefix = mkOption {
 | 
			
		||||
        type = str;
 | 
			
		||||
        default = "";
 | 
			
		||||
        description = ''
 | 
			
		||||
          Prefix string for each diagnostic in the floating window
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      suffix = mkOption {
 | 
			
		||||
        type = str;
 | 
			
		||||
        default = "";
 | 
			
		||||
        description = ''
 | 
			
		||||
          Suffix string for each diagnostic in the floating window
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -10,14 +10,18 @@
 | 
			
		|||
 | 
			
		||||
  cfg = config.vim.ui.borders;
 | 
			
		||||
 | 
			
		||||
  defaultStyles = ["none" "single" "double" "rounded"];
 | 
			
		||||
  # See `:h nvim_open_win` for the available border styles
 | 
			
		||||
  # this list can be updated if additional styles are added.
 | 
			
		||||
  defaultStyles = ["none" "single" "double" "rounded" "solid" "shadow"];
 | 
			
		||||
in {
 | 
			
		||||
  options.vim.ui.borders = {
 | 
			
		||||
    enable = mkEnableOption "visible borders for most windows";
 | 
			
		||||
    enable = mkEnableOption "visible borders for windows that support configurable borders";
 | 
			
		||||
 | 
			
		||||
    # TODO: support configurable border elements with a lua table converted from a list of str
 | 
			
		||||
    # e.g. [ "╔" "═" "╗" "║" "╝" "═" "╚" "║" ]
 | 
			
		||||
    globalStyle = mkOption {
 | 
			
		||||
      type = enum defaultStyles;
 | 
			
		||||
      default = "rounded";
 | 
			
		||||
      default = "single";
 | 
			
		||||
      description = ''
 | 
			
		||||
        The global border style to use.
 | 
			
		||||
      '';
 | 
			
		||||
| 
						 | 
				
			
			@ -37,11 +41,11 @@ in {
 | 
			
		|||
      mapAttrs (_: mkPluginStyleOption) {
 | 
			
		||||
        # despite not having it listed in example configuration, which-key does support the rounded type
 | 
			
		||||
        # additionally, it supports a "shadow" type that is similar to none but is of higher contrast
 | 
			
		||||
        which-key = mkPluginStyleOption "which-key";
 | 
			
		||||
        lspsaga = mkPluginStyleOption "lspsaga";
 | 
			
		||||
        nvim-cmp = mkPluginStyleOption "nvim-cmp";
 | 
			
		||||
        lsp-signature = mkPluginStyleOption "lsp-signature";
 | 
			
		||||
        code-action-menu = mkPluginStyleOption "code-actions-menu";
 | 
			
		||||
        which-key = "which-key";
 | 
			
		||||
        lspsaga = "lspsaga";
 | 
			
		||||
        nvim-cmp = "nvim-cmp";
 | 
			
		||||
        lsp-signature = "lsp-signature";
 | 
			
		||||
        code-action-menu = "code-actions-menu";
 | 
			
		||||
      };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,28 +3,30 @@
 | 
			
		|||
  inherit (lib.types) str;
 | 
			
		||||
in {
 | 
			
		||||
  options.vim.ui.icons = {
 | 
			
		||||
    ERROR = mkOption {
 | 
			
		||||
      type = str;
 | 
			
		||||
      default = " ";
 | 
			
		||||
      description = "The icon to use for error messages";
 | 
			
		||||
    };
 | 
			
		||||
    diagnostics = {
 | 
			
		||||
      ERROR = mkOption {
 | 
			
		||||
        type = str;
 | 
			
		||||
        default = " ";
 | 
			
		||||
        description = "The icon to use for error messages";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    WARN = mkOption {
 | 
			
		||||
      type = str;
 | 
			
		||||
      default = " ";
 | 
			
		||||
      description = "The icon to use for warning messages";
 | 
			
		||||
    };
 | 
			
		||||
      WARN = mkOption {
 | 
			
		||||
        type = str;
 | 
			
		||||
        default = " ";
 | 
			
		||||
        description = "The icon to use for warning messages";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    INFO = mkOption {
 | 
			
		||||
      type = str;
 | 
			
		||||
      default = " ";
 | 
			
		||||
      description = "The icon to use for info messages";
 | 
			
		||||
    };
 | 
			
		||||
      INFO = mkOption {
 | 
			
		||||
        type = str;
 | 
			
		||||
        default = " ";
 | 
			
		||||
        description = "The icon to use for info messages";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    HINT = mkOption {
 | 
			
		||||
      type = str;
 | 
			
		||||
      default = " ";
 | 
			
		||||
      description = "The icon to use for hint messages";
 | 
			
		||||
      HINT = mkOption {
 | 
			
		||||
        type = str;
 | 
			
		||||
        default = " ";
 | 
			
		||||
        description = "The icon to use for hint messages";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue