mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	feat(lsp): use markdown_fenced_languages in stylized_markdown
This commit is contained in:
		| @@ -1056,6 +1056,20 @@ function M._trim(contents, opts) | |||||||
|   return contents |   return contents | ||||||
| end | end | ||||||
|  |  | ||||||
|  | -- Generates a table mapping markdown code block lang to vim syntax, | ||||||
|  | -- based on g:markdown_fenced_languages | ||||||
|  | -- @return a table of lang -> syntax mappings | ||||||
|  | local function get_markdown_fences() | ||||||
|  |   local fences = {} | ||||||
|  |   for _, fence in pairs(vim.g.markdown_fenced_languages or {}) do | ||||||
|  |     local lang, syntax = fence:match("^(.*)=(.*)$") | ||||||
|  |     if lang then | ||||||
|  |       fences[lang] = syntax | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  |   return fences | ||||||
|  | end | ||||||
|  |  | ||||||
| --- Converts markdown into syntax highlighted regions by stripping the code | --- Converts markdown into syntax highlighted regions by stripping the code | ||||||
| --- blocks and converting them into highlighted code. | --- blocks and converting them into highlighted code. | ||||||
| --- This will by default insert a blank line separator after those code block | --- This will by default insert a blank line separator after those code block | ||||||
| @@ -1187,11 +1201,13 @@ function M.stylize_markdown(bufnr, contents, opts) | |||||||
|   -- keep track of syntaxes we already inlcuded. |   -- keep track of syntaxes we already inlcuded. | ||||||
|   -- no need to include the same syntax more than once |   -- no need to include the same syntax more than once | ||||||
|   local langs = {} |   local langs = {} | ||||||
|  |   local fences = get_markdown_fences() | ||||||
|   local function apply_syntax_to_region(ft, start, finish) |   local function apply_syntax_to_region(ft, start, finish) | ||||||
|     if ft == "" then |     if ft == "" then | ||||||
|       vim.cmd(string.format("syntax region markdownCode start=+\\%%%dl+ end=+\\%%%dl+ keepend extend", start, finish + 1)) |       vim.cmd(string.format("syntax region markdownCode start=+\\%%%dl+ end=+\\%%%dl+ keepend extend", start, finish + 1)) | ||||||
|       return |       return | ||||||
|     end |     end | ||||||
|  |     ft = fences[ft] or ft | ||||||
|     local name = ft..idx |     local name = ft..idx | ||||||
|     idx = idx + 1 |     idx = idx + 1 | ||||||
|     local lang = "@"..ft:upper() |     local lang = "@"..ft:upper() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Folke Lemaitre
					Folke Lemaitre