mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Formatting: Ignore chat separators with markdown
Some chat separators (or dinkuses) cause markdown to be rendered on the chat window. Examples include "###" -> h3 and "---" -> metadata. This can look jarring to the end user as it can interrupt a pleasant chat experience. Therefore, it makes sense to ignore these lines with div tags that indicate to Showdown that this string doesn't need markdown. Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
		| @@ -148,6 +148,7 @@ import { | |||||||
| } from "./scripts/secrets.js"; | } from "./scripts/secrets.js"; | ||||||
| import { EventEmitter } from './scripts/eventemitter.js'; | import { EventEmitter } from './scripts/eventemitter.js'; | ||||||
| import { context_settings, loadContextTemplatesFromSettings } from "./scripts/context-template.js"; | import { context_settings, loadContextTemplatesFromSettings } from "./scripts/context-template.js"; | ||||||
|  | import { dinkusExtension } from "./scripts/showdown-dinkus.js"; | ||||||
|  |  | ||||||
| //exporting functions and vars for mods | //exporting functions and vars for mods | ||||||
| export { | export { | ||||||
| @@ -533,6 +534,14 @@ function reloadMarkdownProcessor(render_formulas = false) { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     // Inject the dinkus extension after creating the converter | ||||||
|  |     // Maybe move this into power_user init? | ||||||
|  |     setTimeout(() => { | ||||||
|  |         if (power_user) { | ||||||
|  |             converter.addExtension(dinkusExtension(), 'dinkus'); | ||||||
|  |         } | ||||||
|  |     }, 1) | ||||||
|  |  | ||||||
|     return converter; |     return converter; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -933,6 +933,7 @@ $(document).ready(() => { | |||||||
|     $("#custom_chat_separator").on('input', function () { |     $("#custom_chat_separator").on('input', function () { | ||||||
|         power_user.custom_chat_separator = $(this).val(); |         power_user.custom_chat_separator = $(this).val(); | ||||||
|         saveSettingsDebounced(); |         saveSettingsDebounced(); | ||||||
|  |         reloadMarkdownProcessor(power_user.render_formulas); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     $("#multigen").change(function () { |     $("#multigen").change(function () { | ||||||
|   | |||||||
							
								
								
									
										19
									
								
								public/scripts/showdown-dinkus.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								public/scripts/showdown-dinkus.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | import { power_user } from './power-user.js'; | ||||||
|  |  | ||||||
|  | // Showdown extension to make chat separators (dinkuses) ignore markdown formatting | ||||||
|  | export const dinkusExtension = () => { | ||||||
|  |     if (!power_user) { | ||||||
|  |         console.log("Showdown-dinkus extension: power_user wasn't found! Returning."); | ||||||
|  |         return [] | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // Create an escaped sequence so the regex can work with any character | ||||||
|  |     const savedDinkus = power_user.custom_chat_separator | ||||||
|  |     const escapedDinkus = savedDinkus.split('').map((e) => `\\${e}`).join(''); | ||||||
|  |     const replaceRegex = new RegExp(`^(${escapedDinkus})\n`, "gm") | ||||||
|  |     return [{ | ||||||
|  |         type: "lang", | ||||||
|  |         regex: replaceRegex, | ||||||
|  |         replace: (match) => match.replace(replaceRegex, `<div>${savedDinkus}</div>`).trim() | ||||||
|  |     }]; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user