mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Fix Lexer::getLongString prefix pruning logic
This fixes 3 bugs: 1/ only spaces are considered as part of the prefix 2/ leading tabs are removed unconditionally 3/ off-by-one error in the removal The new intended behavior is: 1/ find the prefix (sequence of spaces and tabs) before the first line; remove this prefix from the line 2/ on the next lines, check whether they start with the same prefix, and if they do, strip this prefix
This commit is contained in:
parent
c5b8250604
commit
48f099d93a
@ -738,7 +738,7 @@ docstring Lexer::getLongString(docstring const & endtoken)
|
||||
break;
|
||||
|
||||
if (firstline) {
|
||||
size_t i = tmpstr.find_first_not_of(char_type(' '));
|
||||
size_t i = tmpstr.find_first_not_of(from_ascii(" \t"));
|
||||
if (i != string::npos)
|
||||
prefix = tmpstr.substr(0, i);
|
||||
firstline = false;
|
||||
@ -747,10 +747,10 @@ docstring Lexer::getLongString(docstring const & endtoken)
|
||||
|
||||
// further lines in long strings may have the same
|
||||
// whitespace prefix as the first line. Remove it.
|
||||
if (prefix.length() && prefixIs(tmpstr, prefix))
|
||||
tmpstr.erase(0, prefix.length() - 1);
|
||||
if (!prefix.empty() && prefixIs(tmpstr, prefix))
|
||||
tmpstr.erase(0, prefix.length());
|
||||
|
||||
str += ltrim(tmpstr, "\t") + '\n';
|
||||
str += tmpstr + '\n';
|
||||
}
|
||||
|
||||
if (!pimpl_->is)
|
||||
|
Loading…
Reference in New Issue
Block a user