1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Fixed line paste indent issues

This commit is contained in:
Brian Fiete 2020-10-17 06:46:16 -07:00
parent a700a6bbd2
commit 2a57d9d447
2 changed files with 36 additions and 24 deletions

View file

@ -2054,6 +2054,8 @@ namespace Beefy.widgets
CursorLineAndColumn = .(origPosition.mLine, 0);
var lineStartPosition = CursorLineAndColumn;
InsertAtCursor("\n");
if (var insertTextAction = mData.mUndoManager.GetLastUndoAction() as InsertTextAction)
insertTextAction.mVirtualCursorPos = origPosition;
CursorLineAndColumn = lineStartPosition;
CursorToLineStart(false);
@ -2071,7 +2073,7 @@ namespace Beefy.widgets
}
PasteText(text);
CursorLineAndColumn = origPosition;
CursorLineAndColumn = .(origPosition.mLine + 1, origPosition.mColumn);
mData.mUndoManager.Add(undoBatchStart.mBatchEnd);
}
else

View file

@ -1230,30 +1230,7 @@ namespace IDE.ui
var lineAndColumn = CursorLineAndColumn;
var lineText = scope String();
if (HasSelection())
{
int startPos;
int endPos;
mSelection.Value.GetAsForwardSelect(out startPos, out endPos);
int line;
int lineChar;
GetLineCharAtIdx(startPos, out line, out lineChar);
lineAndColumn.mLine = (int32)line;
int column;
GetColumnAtLineChar(line, lineChar, out column);
lineAndColumn.mColumn = (int32)column;
int lineStart;
int lineEnd;
GetLinePosition(line, out lineStart, out lineEnd);
ExtractString(lineStart, startPos - lineStart, lineText);
}
else
{
GetLineText(lineAndColumn.mLine, lineText);
}
bool startsWithNewline = (forceMatchIndent) && (str.StartsWith("\n"));
bool isMultiline = str.Contains("\n");
@ -1264,6 +1241,39 @@ namespace IDE.ui
defer(stack) mData.mUndoManager.Add(undoBatchStart.mBatchEnd);
}
if (HasSelection())
{
if (isMultiline)
{
DeleteSelection();
lineAndColumn = CursorLineAndColumn;
}
else
{
int startPos;
int endPos;
mSelection.Value.GetAsForwardSelect(out startPos, out endPos);
int line;
int lineChar;
GetLineCharAtIdx(startPos, out line, out lineChar);
lineAndColumn.mLine = (int32)line;
int column;
GetColumnAtLineChar(line, lineChar, out column);
lineAndColumn.mColumn = (int32)column;
int lineStart;
int lineEnd;
GetLinePosition(line, out lineStart, out lineEnd);
ExtractString(lineStart, startPos - lineStart, lineText);
}
}
if (lineText.IsEmpty)
{
GetLineText(lineAndColumn.mLine, lineText);
}
if (startsWithNewline)
{
CursorLineAndColumn = LineAndColumn(lineAndColumn.mLine, 0);