Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -416,10 +416,12 @@ private static StringCollection GenerateLinesWithoutWordWrap(DisplayCells displa

for (int k = 0; k < lines.Length; k++)
{
if (lines[k] == null || displayCells.Length(lines[k]) <= firstLineLen)
var currentLine = lines[k];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
var currentLine = lines[k];
string currentLine = lines[k];

We should respect EditorConfig setting: csharp_style_var_for_built_in_types = false.


if (currentLine == null || displayCells.Length(currentLine) <= firstLineLen)
{
// we do not need to split further, just add
retVal.Add(lines[k]);
retVal.Add(currentLine);
continue;
}

Expand All @@ -432,15 +434,15 @@ private static StringCollection GenerateLinesWithoutWordWrap(DisplayCells displa

int offset = 0; // offset into the line we are splitting

while (true)
while (currentLine.Length > offset)
{
// acquire the current active display line length (it can very from call to call)
int currentDisplayLen = accumulator.ActiveLen;

// determine if the current tail would fit or not

// for the remaining part of the string, determine its display cell count
int currentCellsToFit = displayCells.Length(lines[k], offset);
int currentCellsToFit = displayCells.Length(currentLine, offset);

// determine if we fit into the line
int excessCells = currentCellsToFit - currentDisplayLen;
Expand All @@ -449,7 +451,7 @@ private static StringCollection GenerateLinesWithoutWordWrap(DisplayCells displa
{
// we are not at the end of the string, select a sub string
// that would fit in the remaining display length
int charactersToAdd = displayCells.GetHeadSplitLength(lines[k], offset, currentDisplayLen);
int charactersToAdd = displayCells.GetHeadSplitLength(currentLine, offset, currentDisplayLen);

if (charactersToAdd <= 0)
{
Expand All @@ -463,7 +465,7 @@ private static StringCollection GenerateLinesWithoutWordWrap(DisplayCells displa
else
{
// of the given length, add it to the accumulator
accumulator.AddLine(lines[k].Substring(offset, charactersToAdd));
accumulator.AddLine(currentLine.Substring(offset, charactersToAdd));
}

// increase the offset by the # of characters added
Expand All @@ -472,7 +474,7 @@ private static StringCollection GenerateLinesWithoutWordWrap(DisplayCells displa
else
{
// we reached the last (partial) line, we add it all
accumulator.AddLine(lines[k].Substring(offset));
accumulator.AddLine(currentLine.Substring(offset));
break;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,15 @@ internal DisplayCellsPSHost(PSHostRawUserInterface rawUserInterface)

internal override int Length(string str, int offset)
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are the changes to this method necessary to fix the issue?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. But it's a refactor to Length to reduce ops while str is empty.

Dbg.Assert(offset >= 0, "offset >= 0");
Dbg.Assert(string.IsNullOrEmpty(str) || (offset < str.Length), "offset < str.Length");
if (string.IsNullOrEmpty(str))
{
return 0;
}

if (offset < 0 || offset >= str.Length)
{
throw PSTraceSource.NewArgumentException(nameof(offset));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In particular this exception.

}

try
{
Expand All @@ -100,7 +107,7 @@ internal override int Length(string str, int offset)
// we will fallback to the default value.
}

return string.IsNullOrEmpty(str) ? 0 : str.Length - offset;
return str.Length - offset;
}

internal override int Length(string str)
Expand Down