commit 68bc50502996a168874723c65edfecebc81af846 Author: Enrico Forestieri <for...@lyx.org> Date: Mon Jun 26 23:10:30 2017 +0200
Fix bug #10705 Seemingly, std::regex does not account for newlines in the string. --- src/insets/InsetListings.cpp | 6 +++++- status.22x | 3 +++ 2 files changed, 8 insertions(+), 1 deletions(-) diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp index 207e98b..66dca57 100644 --- a/src/insets/InsetListings.cpp +++ b/src/insets/InsetListings.cpp @@ -420,7 +420,11 @@ docstring InsetListings::getCaption(OutputParams const & runparams) const // NOTE that } is not allowed in blah2. regex const reg("(.*)\\\\label\\{(.*?)\\}(.*)"); string const new_cap("$1$3},label={$2"); - return from_utf8(regex_replace(to_utf8(cap), reg, new_cap)); + // Replace '\n' with an improbable character from Private Use Area-A + // and then return to '\n' after the regex replacement. + string const capstr = to_utf8(subst(cap, char_type('\n'), 0xffffd)); + return subst(from_utf8(regex_replace(capstr, reg, new_cap)), + 0xffffd, char_type('\n')); } diff --git a/status.22x b/status.22x index c48eb52..d516bfb 100644 --- a/status.22x +++ b/status.22x @@ -49,6 +49,9 @@ What's new - Catch "! Incomplete \if[x]" LaTeX error (bug 10666). +- Fix caption handling in listings insets when it is split into multiple + lines in the LaTeX output (bug 10705). + * LYX2LYX