mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	neovim/clipboard: init module
neovim/clipboard: init module
This commit is contained in:
		
				commit
				
					
						55229043ba
					
				
			
		
					 5 changed files with 100 additions and 10 deletions
				
			
		|  | @ -19,6 +19,11 @@ | |||
|   unavailable as they have been refactored out of the main none-ls repository | ||||
|   upstream. | ||||
| 
 | ||||
| - `vim.useSystemClipboard` has been deprecated as a part of removing most | ||||
|   top-level convenience options, and should instead be configured in the new | ||||
|   module interface. You may set [](#opt-vim.clipboard.registers) appropriately | ||||
|   to configure Neovim to use the system clipboard. | ||||
| 
 | ||||
| [NotAShelf](https://github.com/notashelf): | ||||
| 
 | ||||
| [typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim | ||||
|  | @ -91,6 +96,11 @@ | |||
|   options for `vim.diagnostic.config()` can now be customized through the | ||||
|   [](#opt-vim.diagnostics.config) in nvf. | ||||
| 
 | ||||
| - Add `vim.clipboard` module for easily managing Neovim clipboard providers and | ||||
|   relevant packages in a simple UI. | ||||
|   - This deprecates `vim.useSystemClipboard` as well, see breaking changes | ||||
|     section above for migration options. | ||||
| 
 | ||||
| [amadaluzia](https://github.com/amadaluzia): | ||||
| 
 | ||||
| [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim | ||||
|  |  | |||
|  | @ -111,6 +111,15 @@ in { | |||
|         under the diagnostics module. Please consider using one of 'vim.diagnostics.config' or | ||||
|         'vim.luaConfigRC' to configure LSP lines for Neovim through its own diagnostics API. | ||||
|       '') | ||||
| 
 | ||||
|       # 2025-05-04 | ||||
|       (mkRemovedOptionModule ["vim" "useSystemClipboard"] '' | ||||
|         Clipboard behaviour should now be controlled through the new, more fine-grained module | ||||
|         interface found in 'vim.clipboard'. To replicate previous behaviour, you may either | ||||
|         add 'vim.opt.clipboard:append("unnamedplus")' in luaConfigRC, or preferably set it | ||||
|         in 'vim.clipboard.registers'. Please see the documentation for the new module for more | ||||
|         details, or open an issue if you are confused. | ||||
|       '') | ||||
|     ] | ||||
| 
 | ||||
|     # Migrated via batchRenameOptions. Further batch renames must be below this line. | ||||
|  |  | |||
|  | @ -34,12 +34,6 @@ in { | |||
|       description = "Enable syntax highlighting"; | ||||
|     }; | ||||
| 
 | ||||
|     useSystemClipboard = mkOption { | ||||
|       type = bool; | ||||
|       default = false; | ||||
|       description = "Make use of the clipboard for default yank and paste operations. Don't use * and +"; | ||||
|     }; | ||||
| 
 | ||||
|     lineNumberMode = mkOption { | ||||
|       type = enum ["relative" "number" "relNumber" "none"]; | ||||
|       default = "relNumber"; | ||||
|  | @ -144,10 +138,6 @@ in { | |||
|     # to pre-set Neovim options. Fear not, though as the Lua DAG is still as powerful as it | ||||
|     # could be. | ||||
|     luaConfigRC.basic = entryAfter ["globalsScript"] '' | ||||
|       ${optionalString cfg.useSystemClipboard '' | ||||
|         vim.opt.clipboard:append("unnamedplus") | ||||
|       ''} | ||||
| 
 | ||||
|       ${optionalString cfg.syntaxHighlighting '' | ||||
|         vim.cmd("syntax on") | ||||
|       ''} | ||||
|  |  | |||
							
								
								
									
										80
									
								
								modules/neovim/init/clipboard.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								modules/neovim/init/clipboard.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,80 @@ | |||
| { | ||||
|   config, | ||||
|   pkgs, | ||||
|   lib, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.modules) mkIf; | ||||
|   inherit (lib.options) mkOption mkEnableOption mkPackageOption; | ||||
|   inherit (lib.types) nullOr either str listOf submodule; | ||||
|   inherit (lib.attrsets) mapAttrs mapAttrsToList filterAttrs; | ||||
|   cfg = config.vim.clipboard; | ||||
| in { | ||||
|   options = { | ||||
|     vim = { | ||||
|       clipboard = { | ||||
|         enable = mkEnableOption '' | ||||
|           clipboard management for Neovim. Users may still choose to manage their | ||||
|           clipboard through [](#opt-vim.options) should they wish to avoid using | ||||
|           this module. | ||||
|         ''; | ||||
| 
 | ||||
|         registers = mkOption { | ||||
|           type = either str (listOf str); | ||||
|           default = ""; | ||||
|           example = "unnamedplus"; | ||||
|           description = '' | ||||
|             The register to be used by the Neovim clipboard. Recognized types are: | ||||
| 
 | ||||
|             * unnamed: Vim will use the clipboard register `"*"` for all yank, delete, | ||||
|               change and put operations which would normally go to the unnamed register. | ||||
| 
 | ||||
|             * unnamedplus: A variant of the "unnamed" flag which uses the clipboard register | ||||
|             `"+"` ({command}`:h quoteplus`) instead of register `"*"` for all yank, delete, | ||||
|             change and put operations which would normally go to the unnamed register. | ||||
| 
 | ||||
|             When `unnamed` and `unnamedplus` is included simultaneously yank and delete | ||||
|             operations (but not put) will additionally copy the text into register `"*"`. | ||||
| 
 | ||||
|             Please see  {command}`:h clipboard` for more details. | ||||
| 
 | ||||
|           ''; | ||||
|         }; | ||||
| 
 | ||||
|         providers = mkOption { | ||||
|           type = submodule { | ||||
|             options = let | ||||
|               clipboards = { | ||||
|                 # name = "package name"; | ||||
|                 wl-copy = "wl-clipboard"; | ||||
|                 xclip = "xclip"; | ||||
|                 xsel = "xsel"; | ||||
|               }; | ||||
|             in | ||||
|               mapAttrs (name: pname: { | ||||
|                 enable = mkEnableOption name; | ||||
|                 package = mkPackageOption pkgs pname {nullable = true;}; | ||||
|               }) | ||||
|               clipboards; | ||||
|           }; | ||||
|           default = {}; | ||||
|           description = '' | ||||
|             Clipboard providers for which packages will be added to nvf's | ||||
|             {option}`extraPackages`. The `package` field may be set to `null` | ||||
|             if related packages are already found in system packages to | ||||
|             potentially reduce closure sizes. | ||||
|           ''; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config = mkIf cfg.enable { | ||||
|     vim = { | ||||
|       options.clipboard = cfg.registers; | ||||
|       extraPackages = mapAttrsToList (_: v: v.package) ( | ||||
|         filterAttrs (_: v: v.enable && v.package != null) cfg.providers | ||||
|       ); | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  | @ -2,6 +2,7 @@ | |||
|   imports = [ | ||||
|     ./autocmds.nix | ||||
|     ./basic.nix | ||||
|     ./clipboard.nix | ||||
|     ./debug.nix | ||||
|     ./diagnostics.nix | ||||
|     ./highlight.nix | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Soliprem
				Soliprem