diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Editor.cxx | 22 | 
1 files changed, 10 insertions, 12 deletions
| diff --git a/src/Editor.cxx b/src/Editor.cxx index 3bf50b09e..fac808e54 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -1623,19 +1623,17 @@ bool Editor::WrapLines(WrapScope ws) {  void Editor::LinesJoin() {  	if (!RangeContainsProtected(targetRange.start.Position(), targetRange.end.Position())) {  		UndoGroup ug(pdoc); -		bool prevNonWS = true; -		for (Sci::Position pos = targetRange.start.Position(); pos < targetRange.end.Position(); pos++) { -			if (pdoc->IsPositionInLineEnd(pos)) { -				targetRange.end.Add(-pdoc->LenChar(pos)); -				pdoc->DelChar(pos); -				if (prevNonWS) { -					// Ensure at least one space separating previous lines -					const Sci::Position lengthInserted = pdoc->InsertString(pos, " ", 1); -					targetRange.end.Add(lengthInserted); -				} -			} else { -				prevNonWS = pdoc->CharAt(pos) != ' '; +		for (Sci::Position pos = pdoc->LineEndPosition(targetRange.start.Position()); pos < targetRange.end.Position();) { +			const char chPrev = pdoc->CharAt(pos - 1); +			const Sci::Position widthChar = pdoc->LenChar(pos); +			targetRange.end.Add(-widthChar); +			pdoc->DeleteChars(pos, widthChar); +			if (chPrev != ' ') { +				// Ensure at least one space separating previous lines +				const Sci::Position lengthInserted = pdoc->InsertString(pos, " ", 1); +				targetRange.end.Add(lengthInserted);  			} +			pos = pdoc->LineEndPosition(pos);  		}  	}  } | 
