diff --git a/public/index.html b/public/index.html
index 5e144530c..a14c3fda0 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1628,7 +1628,6 @@
-
Instruct mode
diff --git a/public/script.js b/public/script.js
index 516d28b33..10cc3ad6a 100644
--- a/public/script.js
+++ b/public/script.js
@@ -150,7 +150,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";
+import { markdownExclusionExt } from "./scripts/showdown-exclusion.js";
import { setFloatingPrompt } from "./scripts/extensions/floating-prompt/index.js";
//exporting functions and vars for mods
@@ -545,7 +545,7 @@ function reloadMarkdownProcessor(render_formulas = false) {
// Maybe move this into power_user init?
setTimeout(() => {
if (power_user) {
- converter.addExtension(dinkusExtension(), 'dinkus');
+ converter.addExtension(markdownExclusionExt(), 'exclusion');
}
}, 1)
diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js
index 797184aa3..d6de47d9b 100644
--- a/public/scripts/power-user.js
+++ b/public/scripts/power-user.js
@@ -93,7 +93,7 @@ let power_user = {
multigen_first_chunk: 50,
multigen_next_chunks: 30,
custom_chat_separator: '',
- // markdown_escape_strings: '',
+ markdown_escape_strings: '',
fast_ui_mode: true,
avatar_style: avatar_styles.ROUND,
chat_display: chat_styles.DEFAULT,
@@ -562,7 +562,7 @@ function loadPowerUserSettings(settings, data) {
$("#include_newline_checkbox").prop("checked", power_user.include_newline);
$('#render_formulas').prop("checked", power_user.render_formulas);
$("#custom_chat_separator").val(power_user.custom_chat_separator);
- //$("#markdown_escape_strings").val(power_user.markdown_escape_strings);
+ $("#markdown_escape_strings").val(power_user.markdown_escape_strings);
$("#fast_ui_mode").prop("checked", power_user.fast_ui_mode);
$("#waifuMode").prop("checked", power_user.waifuMode);
$("#movingUImode").prop("checked", power_user.movingUI);
@@ -1009,13 +1009,13 @@ $(document).ready(() => {
saveSettingsDebounced();
reloadMarkdownProcessor(power_user.render_formulas);
});
- /*
- $("#markdown_escape_strings").on('input', function () {
- power_user.markdown_escape_strings = $(this).val();
- saveSettingsDebounced();
- reloadMarkdownProcessor(power_user.render_formulas);
- });
- */
+
+ $("#markdown_escape_strings").on('input', function () {
+ power_user.markdown_escape_strings = $(this).val();
+ saveSettingsDebounced();
+ reloadMarkdownProcessor(power_user.render_formulas);
+ });
+
$("#multigen").change(function () {
power_user.multigen = $(this).prop("checked");
saveSettingsDebounced();
diff --git a/public/scripts/showdown-dinkus.js b/public/scripts/showdown-dinkus.js
deleted file mode 100644
index 9a895ee9d..000000000
--- a/public/scripts/showdown-dinkus.js
+++ /dev/null
@@ -1,25 +0,0 @@
-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
-
- // No dinkus? No extension!
- if (!savedDinkus || savedDinkus.trim().length === 0) {
- return []
- }
-
- 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, `\u0000${savedDinkus} \n`)
- }];
-}
diff --git a/public/scripts/showdown-exclusion.js b/public/scripts/showdown-exclusion.js
new file mode 100644
index 000000000..39637150e
--- /dev/null
+++ b/public/scripts/showdown-exclusion.js
@@ -0,0 +1,35 @@
+import { power_user } from './power-user.js';
+
+// Showdown extension to make chat separators (dinkuses) ignore markdown formatting
+export const markdownExclusionExt = () => {
+ if (!power_user) {
+ console.log("Showdown-dinkus extension: power_user wasn't found! Returning.");
+ return []
+ }
+
+ let combinedExcludeString = '';
+ if (power_user.custom_chat_separator) {
+ combinedExcludeString += `${power_user.custom_chat_separator},`;
+ }
+
+ if (power_user.markdown_escape_strings) {
+ combinedExcludeString += power_user.markdown_escape_strings;
+ }
+
+ const escapedExclusions = combinedExcludeString
+ .split(",")
+ .map((element) => `(${element.split('').map((char) => `\\${char}`).join('')})`);
+
+
+ // No exclusions? No extension!
+ if (!combinedExcludeString || combinedExcludeString.length === 0 || escapedExclusions.length === 0) {
+ return [];
+ }
+
+ const replaceRegex = new RegExp(`^(${escapedExclusions.join("|")})\n`, "gm");
+ return [{
+ type: "lang",
+ regex: replaceRegex,
+ replace: ((match) => match.replace(replaceRegex, `\u0000${match} \n`))
+ }];
+}