aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2026-01-26 12:10:42 +1100
committerNeil <nyamatongwe@gmail.com>2026-01-26 12:10:42 +1100
commitf06acbb8f212ca5fdf599b89f4229f1e67f0c41a (patch)
tree1ab7471bc7fa43fddae475b0cd52833db5d975c3
parentdb1e3e906de332fe783b99d5ed464f8a7fda8942 (diff)
downloadscintilla-mirror-f06acbb8f212ca5fdf599b89f4229f1e67f0c41a.tar.gz
Minor simplifications in Editor::Indent.master
-rw-r--r--src/Editor.cxx31
1 files changed, 13 insertions, 18 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 37e0a2736..5b42407e3 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -4168,42 +4168,37 @@ void Editor::Indent(bool forwards, bool lineIndent) {
Sci::Position caretPosition = sel.Range(r).caret.Position();
const Sci::Line lineCurrentPos = pdoc->SciLineFromPosition(caretPosition);
if (lineOfAnchor == lineCurrentPos && !lineIndent) {
+ const int indentationStep = pdoc->IndentSize();
if (forwards) {
pdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length());
caretPosition = sel.Range(r).caret.Position();
- if (pdoc->GetColumn(caretPosition) <= pdoc->GetColumn(pdoc->GetLineIndentPosition(lineCurrentPos)) &&
- pdoc->tabIndents) {
- const int indentation = pdoc->GetLineIndentation(lineCurrentPos);
- const int indentationStep = pdoc->IndentSize();
+ const int indentation = pdoc->GetLineIndentation(lineCurrentPos);
+ const Sci::Position column = pdoc->GetColumn(caretPosition);
+ if (column <= indentation && pdoc->tabIndents) {
+ // Inside initial whitespace
const Sci::Position posSelect = pdoc->SetLineIndentation(
- lineCurrentPos, indentation + indentationStep - indentation % indentationStep);
+ lineCurrentPos, indentation + indentationStep - (indentation % indentationStep));
sel.Range(r) = SelectionRange(posSelect);
} else {
if (pdoc->useTabs) {
- const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, "\t", 1);
+ const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, "\t");
sel.Range(r) = SelectionRange(caretPosition + lengthInserted);
} else {
- int numSpaces = (pdoc->tabInChars) -
- static_cast<int>((pdoc->GetColumn(caretPosition) % (pdoc->tabInChars)));
- if (numSpaces < 1)
- numSpaces = pdoc->tabInChars;
+ const Sci::Position numSpaces = pdoc->tabInChars - (column % pdoc->tabInChars);
const std::string spaceText(numSpaces, ' ');
const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, spaceText);
sel.Range(r) = SelectionRange(caretPosition + lengthInserted);
}
}
} else {
- if (pdoc->GetColumn(caretPosition) <= pdoc->GetLineIndentation(lineCurrentPos) &&
- pdoc->tabIndents) {
- const int indentation = pdoc->GetLineIndentation(lineCurrentPos);
- const int indentationStep = pdoc->IndentSize();
+ const int indentation = pdoc->GetLineIndentation(lineCurrentPos);
+ const Sci::Position column = pdoc->GetColumn(caretPosition);
+ if (column <= indentation && pdoc->tabIndents) {
const Sci::Position posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationStep);
sel.Range(r) = SelectionRange(posSelect);
} else {
- Sci::Position newColumn = ((pdoc->GetColumn(caretPosition) - 1) / pdoc->tabInChars) *
- pdoc->tabInChars;
- if (newColumn < 0)
- newColumn = 0;
+ const Sci::Position newColumn = std::max<Sci::Position>(0,
+ ((column - 1) / pdoc->tabInChars) * pdoc->tabInChars);
Sci::Position newPos = caretPosition;
while (pdoc->GetColumn(newPos) > newColumn)
newPos--;