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:
parent
a700a6bbd2
commit
2a57d9d447
2 changed files with 36 additions and 24 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue