mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	binds/qmk: init (#1083)
* binds/qmk: init Create the `vim.binds.qmk` module with `enable` and `setupOpts`. * Clean up release notes Add consistent style and formatting to release notes Co-authored-by: raf <raf@notashelf.dev> * Clean up release notes (again) * binks/qmk: remove unneeded function * binds/qmk: Rename to `vim.utility.qmk` Move the `vim.binds.qmk` module to `vim.utility.qmk`. * utility/qmk: add defaults and asserts Add default values and assertions for required options. * utility/qmk: rename to utility/qmk-nvim * utility/qmk-nvim: improve assertion readability * utility/qmk-nvim: Fix links broken in module rename * Fix release notes * Add final newline to release notes --------- Co-authored-by: raf <raf@notashelf.dev>
This commit is contained in:
		
					parent
					
						
							
								80a2944418
							
						
					
				
			
			
				commit
				
					
						b7d321fd88
					
				
			
		
					 7 changed files with 111 additions and 6 deletions
				
			
		|  | @ -192,6 +192,7 @@ isMaximal: { | ||||||
|       vim-wakatime.enable = false; |       vim-wakatime.enable = false; | ||||||
|       diffview-nvim.enable = true; |       diffview-nvim.enable = true; | ||||||
|       yanky-nvim.enable = false; |       yanky-nvim.enable = false; | ||||||
|  |       qmk-nvim.enable = false; # requires hardware specific options | ||||||
|       icon-picker.enable = isMaximal; |       icon-picker.enable = isMaximal; | ||||||
|       surround.enable = isMaximal; |       surround.enable = isMaximal; | ||||||
|       leetcode-nvim.enable = isMaximal; |       leetcode-nvim.enable = isMaximal; | ||||||
|  |  | ||||||
|  | @ -482,12 +482,11 @@ | ||||||
| [jsonfmt]: https://github.com/caarlos0/jsonfmt | [jsonfmt]: https://github.com/caarlos0/jsonfmt | ||||||
| [superhtml]: https://github.com/kristoff-it/superhtml | [superhtml]: https://github.com/kristoff-it/superhtml | ||||||
| [htmlHTML]: https://github.com/htmlhint/HTMLHint | [htmlHTML]: https://github.com/htmlhint/HTMLHint | ||||||
|  | [qmk-nvim]: https://github.com/codethread/qmk.nvim | ||||||
| 
 | 
 | ||||||
| - Add just support under `vim.languages.just` using [just-lsp]. | - Add just support under `vim.languages.just` using [just-lsp]. | ||||||
| 
 |  | ||||||
| - Add [roslyn-ls] to the `vim.languages.csharp` module. | - Add [roslyn-ls] to the `vim.languages.csharp` module. | ||||||
| 
 | - Add JSON support under `vim.languages.json` using [jsonls] and [jsonfmt]. | ||||||
| - Added json support under `vim.languages.json` using [jsonls] and [jsonfmt]. | - Add advanced HTML support under `vim.languages.html` using [superhtml] and | ||||||
| 
 |   [htmlHINT]. | ||||||
| - Added advanced HTML support with [superhtml] for lsp and formatting and | - Add QMK support under `vim.utility.qmk-nvim` via [qmk-nvim]. | ||||||
|   [htmlHINT] for diagnostics. |  | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ | ||||||
|     ./oil-nvim |     ./oil-nvim | ||||||
|     ./outline |     ./outline | ||||||
|     ./preview |     ./preview | ||||||
|  |     ./qmk-nvim | ||||||
|     ./sleuth |     ./sleuth | ||||||
|     ./smart-splits |     ./smart-splits | ||||||
|     ./snacks-nvim |     ./snacks-nvim | ||||||
|  |  | ||||||
							
								
								
									
										36
									
								
								modules/plugins/utility/qmk-nvim/config.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								modules/plugins/utility/qmk-nvim/config.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | ||||||
|  | { | ||||||
|  |   config, | ||||||
|  |   lib, | ||||||
|  |   ... | ||||||
|  | }: let | ||||||
|  |   inherit (lib.modules) mkIf; | ||||||
|  |   inherit (lib.nvim.lua) toLuaObject; | ||||||
|  |   inherit (lib.nvim.dag) entryAfter; | ||||||
|  | 
 | ||||||
|  |   cfg = config.vim.utility.qmk-nvim; | ||||||
|  | in { | ||||||
|  |   config = mkIf cfg.enable { | ||||||
|  |     vim = { | ||||||
|  |       startPlugins = ["qmk-nvim"]; | ||||||
|  | 
 | ||||||
|  |       pluginRC.qmk-nvim = entryAfter ["nvim-notify"] '' | ||||||
|  |         require('qmk').setup(${toLuaObject cfg.setupOpts}) | ||||||
|  |       ''; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     assertions = [ | ||||||
|  |       { | ||||||
|  |         assertion = cfg.setupOpts.variant == "qmk" && cfg.setupOpts.comment_preview.position != "inside"; | ||||||
|  |         message = "comment_preview.position can only be set to inside when using the qmk layoyt"; | ||||||
|  |       } | ||||||
|  |       { | ||||||
|  |         assertion = cfg.setupOpts.name != null; | ||||||
|  |         message = "qmk-nvim requires 'vim.utility.qmk.setupOpts.name' to be set."; | ||||||
|  |       } | ||||||
|  |       { | ||||||
|  |         assertion = cfg.setupOpts.layout != null; | ||||||
|  |         message = "qmk-nvim requires 'vim.utility.qmk.setupOpts.layout' to be set."; | ||||||
|  |       } | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								modules/plugins/utility/qmk-nvim/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/plugins/utility/qmk-nvim/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | { | ||||||
|  |   imports = [ | ||||||
|  |     ./config.nix | ||||||
|  |     ./qmk-nvim.nix | ||||||
|  |   ]; | ||||||
|  | } | ||||||
							
								
								
									
										49
									
								
								modules/plugins/utility/qmk-nvim/qmk-nvim.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								modules/plugins/utility/qmk-nvim/qmk-nvim.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | ||||||
|  | {lib, ...}: let | ||||||
|  |   inherit (lib.options) mkOption mkEnableOption; | ||||||
|  |   inherit (lib.types) attrsOf nullOr enum lines str; | ||||||
|  |   inherit (lib.nvim.types) mkPluginSetupOption; | ||||||
|  | in { | ||||||
|  |   options.vim.utility.qmk-nvim = { | ||||||
|  |     enable = mkEnableOption "QMK and ZMK keymaps in nvim"; | ||||||
|  | 
 | ||||||
|  |     setupOpts = mkPluginSetupOption "qmk.nvim" { | ||||||
|  |       name = mkOption { | ||||||
|  |         type = nullOr str; | ||||||
|  |         default = null; | ||||||
|  |         description = "The name of the layout"; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       layout = mkOption { | ||||||
|  |         type = nullOr lines; | ||||||
|  |         default = null; | ||||||
|  |         description = '' | ||||||
|  |           The keyboard key layout | ||||||
|  |           see <https://github.com/codethread/qmk.nvim?tab=readme-ov-file#Layout> for more details | ||||||
|  |         ''; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       variant = mkOption { | ||||||
|  |         type = enum ["qmk" "zmk"]; | ||||||
|  |         default = "qmk"; | ||||||
|  |         description = "Chooses the expected hardware target"; | ||||||
|  |       }; | ||||||
|  | 
 | ||||||
|  |       comment_preview = { | ||||||
|  |         position = mkOption { | ||||||
|  |           type = enum ["top" "bottom" "inside" "none"]; | ||||||
|  |           default = "top"; | ||||||
|  |           description = "Controls the position of the preview"; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         keymap_overrides = mkOption { | ||||||
|  |           type = attrsOf str; | ||||||
|  |           default = {}; | ||||||
|  |           description = '' | ||||||
|  |             Key codes to text replacements | ||||||
|  |             see <https://github.com/codethread/qmk.nvim/blob/main/lua/qmk/config/key_map.lua> for more details | ||||||
|  |           ''; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -2186,6 +2186,19 @@ | ||||||
|       "url": "https://github.com/kevinhwang91/promise-async/archive/119e8961014c9bfaf1487bf3c2a393d254f337e2.tar.gz", |       "url": "https://github.com/kevinhwang91/promise-async/archive/119e8961014c9bfaf1487bf3c2a393d254f337e2.tar.gz", | ||||||
|       "hash": "0q4a0rmy09hka6zvydzjj2gcm2j5mlbrhbxfcdjj33ngpblkmqzm" |       "hash": "0q4a0rmy09hka6zvydzjj2gcm2j5mlbrhbxfcdjj33ngpblkmqzm" | ||||||
|     }, |     }, | ||||||
|  |     "qmk-nvim": { | ||||||
|  |       "type": "Git", | ||||||
|  |       "repository": { | ||||||
|  |         "type": "GitHub", | ||||||
|  |         "owner": "codethread", | ||||||
|  |         "repo": "qmk.nvim" | ||||||
|  |       }, | ||||||
|  |       "branch": "main", | ||||||
|  |       "submodules": false, | ||||||
|  |       "revision": "3c804c1480991e4837514900b22b9358cfd64fa1", | ||||||
|  |       "url": "https://github.com/codethread/qmk.nvim/archive/3c804c1480991e4837514900b22b9358cfd64fa1.tar.gz", | ||||||
|  |       "hash": "03fsx6qsn8b36jp5m0fkdla6gkkzdv2j18y378y3cqpjclgq995a" | ||||||
|  |     }, | ||||||
|     "rainbow-delimiters-nvim": { |     "rainbow-delimiters-nvim": { | ||||||
|       "type": "Git", |       "type": "Git", | ||||||
|       "repository": { |       "repository": { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Poseidon
				Poseidon