mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	languages/typst: add typst-preview.nvim as an extension
		
	This commit is contained in:
		
					parent
					
						
							
								ed3be410c5
							
						
					
				
			
			
				commit
				
					
						a369352365
					
				
			
		
					 4 changed files with 89 additions and 3 deletions
				
			
		
							
								
								
									
										8
									
								
								docs/release-notes/rl-0.8.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								docs/release-notes/rl-0.8.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | ||||||
|  | # Release 0.8 {#sec-release-0.8} | ||||||
|  | 
 | ||||||
|  | [NotAShelf](https://github.com/notashelf): | ||||||
|  | 
 | ||||||
|  | [typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim | ||||||
|  | 
 | ||||||
|  | - Add [typst-preview.nvim] under | ||||||
|  |   `languages.typst.extensions.typst-preview-nvim`. | ||||||
							
								
								
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										17
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -1902,6 +1902,22 @@ | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "plugin-typst-preview-nvim": { | ||||||
|  |       "flake": false, | ||||||
|  |       "locked": { | ||||||
|  |         "lastModified": 1733120663, | ||||||
|  |         "narHash": "sha256-uYMZ2PONiiI3UDvCgNvyy4+jhzmUDbAyxX0phKxELXw=", | ||||||
|  |         "owner": "chomosuke", | ||||||
|  |         "repo": "typst-preview.nvim", | ||||||
|  |         "rev": "0cb5f5627312f50ce089f785ec42b55a85f30ce7", | ||||||
|  |         "type": "github" | ||||||
|  |       }, | ||||||
|  |       "original": { | ||||||
|  |         "owner": "chomosuke", | ||||||
|  |         "repo": "typst-preview.nvim", | ||||||
|  |         "type": "github" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "plugin-vim-dirtytalk": { |     "plugin-vim-dirtytalk": { | ||||||
|       "flake": false, |       "flake": false, | ||||||
|       "locked": { |       "locked": { | ||||||
|  | @ -2151,6 +2167,7 @@ | ||||||
|         "plugin-tokyonight": "plugin-tokyonight", |         "plugin-tokyonight": "plugin-tokyonight", | ||||||
|         "plugin-trouble": "plugin-trouble", |         "plugin-trouble": "plugin-trouble", | ||||||
|         "plugin-ts-error-translator": "plugin-ts-error-translator", |         "plugin-ts-error-translator": "plugin-ts-error-translator", | ||||||
|  |         "plugin-typst-preview-nvim": "plugin-typst-preview-nvim", | ||||||
|         "plugin-vim-dirtytalk": "plugin-vim-dirtytalk", |         "plugin-vim-dirtytalk": "plugin-vim-dirtytalk", | ||||||
|         "plugin-vim-fugitive": "plugin-vim-fugitive", |         "plugin-vim-fugitive": "plugin-vim-fugitive", | ||||||
|         "plugin-vim-illuminate": "plugin-vim-illuminate", |         "plugin-vim-illuminate": "plugin-vim-illuminate", | ||||||
|  |  | ||||||
|  | @ -206,6 +206,11 @@ | ||||||
|       flake = false; |       flake = false; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     plugin-typst-preview-nvim = { | ||||||
|  |       url = "github:chomosuke/typst-preview.nvim"; | ||||||
|  |       flake = false; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     plugin-nvim-metals = { |     plugin-nvim-metals = { | ||||||
|       url = "github:scalameta/nvim-metals"; |       url = "github:scalameta/nvim-metals"; | ||||||
|       flake = false; |       flake = false; | ||||||
|  |  | ||||||
|  | @ -7,10 +7,13 @@ | ||||||
|   inherit (lib.options) mkEnableOption mkOption; |   inherit (lib.options) mkEnableOption mkOption; | ||||||
|   inherit (lib.modules) mkIf mkMerge; |   inherit (lib.modules) mkIf mkMerge; | ||||||
|   inherit (lib.lists) isList; |   inherit (lib.lists) isList; | ||||||
|   inherit (lib.types) enum either listOf package str; |   inherit (lib.types) nullOr enum either attrsOf listOf package str; | ||||||
|   inherit (lib.attrsets) attrNames; |   inherit (lib.attrsets) attrNames; | ||||||
|   inherit (lib.nvim.lua) expToLua; |   inherit (lib.generators) mkLuaInline; | ||||||
|   inherit (lib.nvim.types) mkGrammarOption; |   inherit (lib.meta) getExe; | ||||||
|  |   inherit (lib.nvim.lua) expToLua toLuaObject; | ||||||
|  |   inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption; | ||||||
|  |   inherit (lib.nvim.dag) entryAnywhere; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.languages.typst; |   cfg = config.vim.languages.typst; | ||||||
| 
 | 
 | ||||||
|  | @ -33,6 +36,7 @@ | ||||||
|         } |         } | ||||||
|       ''; |       ''; | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|     tinymist = { |     tinymist = { | ||||||
|       package = pkgs.tinymist; |       package = pkgs.tinymist; | ||||||
|       lspConfig = '' |       lspConfig = '' | ||||||
|  | @ -120,6 +124,50 @@ in { | ||||||
|         default = formats.${cfg.format.type}.package; |         default = formats.${cfg.format.type}.package; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|  |     extensions = { | ||||||
|  |       typst-preview-nvim = { | ||||||
|  |         enable = | ||||||
|  |           mkEnableOption '' | ||||||
|  |             [typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim | ||||||
|  | 
 | ||||||
|  |             Low latency typst preview for Neovim via [typst-preview.nvim] | ||||||
|  |           '' | ||||||
|  |           // {default = true;}; | ||||||
|  | 
 | ||||||
|  |         setupOpts = mkPluginSetupOption "typst-preview-nvim" { | ||||||
|  |           open_cmd = mkOption { | ||||||
|  |             type = nullOr str; | ||||||
|  |             default = null; | ||||||
|  |             example = "firefox %s -P typst-preview --class typst-preview"; | ||||||
|  |             description = '' | ||||||
|  |               Custom format string to open the output link provided with `%s` | ||||||
|  |             ''; | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |           dependencies_bin = mkOption { | ||||||
|  |             type = attrsOf str; | ||||||
|  |             default = { | ||||||
|  |               "tinymist" = getExe servers.tinymist.package; | ||||||
|  |               "websocat" = getExe pkgs.websocat; | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             description = '' | ||||||
|  |               Provide the path to binaries for dependencies. Setting this | ||||||
|  |               to a non-null value will skip the download of the binary by | ||||||
|  |               the plugin. | ||||||
|  |             ''; | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |           extra_args = mkOption { | ||||||
|  |             type = nullOr (listOf str); | ||||||
|  |             default = null; | ||||||
|  |             example = ["--input=ver=draft" "--ignore-system-fonts"]; | ||||||
|  |             description = "A list of extra arguments (or `null`) to be passed to previewer"; | ||||||
|  |           }; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
|   config = mkIf cfg.enable (mkMerge [ |   config = mkIf cfg.enable (mkMerge [ | ||||||
|     (mkIf cfg.treesitter.enable { |     (mkIf cfg.treesitter.enable { | ||||||
|  | @ -136,5 +184,13 @@ in { | ||||||
|       vim.lsp.lspconfig.enable = true; |       vim.lsp.lspconfig.enable = true; | ||||||
|       vim.lsp.lspconfig.sources.typst-lsp = servers.${cfg.lsp.server}.lspConfig; |       vim.lsp.lspconfig.sources.typst-lsp = servers.${cfg.lsp.server}.lspConfig; | ||||||
|     }) |     }) | ||||||
|  | 
 | ||||||
|  |     # Extensions | ||||||
|  |     (mkIf cfg.extensions.typst-preview-nvim.enable { | ||||||
|  |       vim.startPlugins = ["typst-preview-nvim"]; | ||||||
|  |       vim.pluginRC.typst-preview-nvim = entryAnywhere '' | ||||||
|  |         require("typst-preview").setup(${toLuaObject cfg.extensions.typst-preview-nvim.setupOpts}) | ||||||
|  |       ''; | ||||||
|  |     }) | ||||||
|   ]); |   ]); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue