[LyX/master] Only strip outer braces in listings options

Juergen Spitzmueller spitz at lyx.org
Wed Jan 17 12:18:18 UTC 2024


commit b29b0f8754d79cde10c766a9044fc6e933649ae8
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Jan 17 14:45:09 2024 +0100

    Only strip outer braces in listings options
    
    trim stripped also multiple subsequent braces
---
 src/insets/InsetInclude.cpp |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index 870310e..9161962 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -176,6 +176,16 @@ char_type replaceCommaInBraces(docstring & params)
 	return private_char;
 }
 
+docstring stripOuterBraces(docstring & str)
+{
+	// trim only first and last occurrence of { and }
+	if (prefixIs(str, from_ascii("{")))
+		str = str.substr(1, docstring::npos);
+	if (suffixIs(str, from_ascii("}")))
+		str = str.substr(0, str.size() - 1);
+	return str;
+}
+
 } // namespace
 
 
@@ -699,13 +709,15 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 				language = opts[i].substr(9);
 				opts.erase(opts.begin() + i--);
 			} else if (prefixIs(opts[i], from_ascii("caption="))) {
-				caption = params().prepareCommand(runparams, trim(opts[i].substr(8), "{}"),
+				caption = opts[i].substr(8);
+				caption = params().prepareCommand(runparams, stripOuterBraces(caption),
 								  ParamInfo::HANDLING_LATEXIFY);
 				opts.erase(opts.begin() + i--);
 				if (!use_minted)
 					latexed_opts.push_back(from_ascii("caption={") + caption + "}");
 			} else if (prefixIs(opts[i], from_ascii("label="))) {
-				label = params().prepareCommand(runparams, trim(opts[i].substr(6), "{}"),
+				label = opts[i].substr(6);
+				label = params().prepareCommand(runparams, stripOuterBraces(label),
 								ParamInfo::HANDLING_ESCAPE);
 				opts.erase(opts.begin() + i--);
 				if (!use_minted)
@@ -713,7 +725,7 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
 			}
 			if (use_minted && !label.empty()) {
 				if (isfloat || !caption.empty())
-					label = trim(label, "{}");
+					label = stripOuterBraces(label);
 				else
 					opts.push_back(from_ascii("label=") + label);
 			}


More information about the lyx-cvs mailing list