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";
|
||||
import { EventEmitter } from './scripts/eventemitter.js';
|
||||
import { context_settings, loadContextTemplatesFromSettings } from "./scripts/context-template.js";
|
||||
import { dinkusExtension } from "./scripts/showdown-dinkus.js";
|
||||
|
||||
//exporting functions and vars for mods
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -933,6 +933,7 @@ $(document).ready(() => {
|
||||
$("#custom_chat_separator").on('input', function () {
|
||||
power_user.custom_chat_separator = $(this).val();
|
||||
saveSettingsDebounced();
|
||||
reloadMarkdownProcessor(power_user.render_formulas);
|
||||
});
|
||||
|
||||
$("#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