CellBuffer: `LineEnd(line)` maybe negative
I'm prefer to retain current truncation behavior: Sci::Position Document::GetColumn(Sci::Position pos) const noexcept { Sci::Position column = 0; const Sci::Line line = SciLineFromPosition(pos); //if ((line >= 0) && (line < LinesTotal())) { const Sci::Position length = LengthNoExcept(); pos = std::min(pos, length); for (Sci::Position i = cb.LineStart(line); i < pos;) { const char ch = cb.CharAt(i); if (ch == '\t') { column = NextTab(column, tabInChars); i++; } else if (ch == '\n' || ch == '\r') {...
I'm prefer to retain current truncation behavior: Sci::Position Document::GetColumn(Sci::Position pos) const noexcept { Sci::Position column = 0; const Sci::Line line = SciLineFromPosition(pos); if ((line >= 0) && (line < LinesTotal())) { const Sci::Position length = LengthNoExcept(); pos = std::min(pos, length); for (Sci::Position i = cb.LineStart(line); i < pos;) { const char ch = cb.CharAt(i); if (ch == '\t') { column = NextTab(column, tabInChars); i++; } else if (ch == '\n' || ch == '\r') { return...
for edge discovery, something like following might be enough (edgePosition >= posLineStart is always true): - Sci::Position edgePosition = model.pdoc->FindColumn(line, vstyle.theEdge.column) - if (edgePosition >= posLineStart) { - edgePosition -= posLineStart; - } + const Sci::Position edgePosition = model.pdoc->FindColumn(line, vstyle.theEdge.column) - posLineStart; + ll->edgeColumn = std::min(ll->numCharsBeforeEOL, static_cast<int>(edgePosition)); void SciTEBase::GoMessage(int dir) (inside SciTEBuffers.cxx)...
for edge discovery, something like following might be enough (edgePosition >= posLineStart is always true): - Sci::Position edgePosition = model.pdoc->FindColumn(line, vstyle.theEdge.column) - if (edgePosition >= posLineStart) { - edgePosition -= posLineStart; - } + const int column = std::min(vstyle.theEdge.column, ll->numCharsBeforeEOL); + const Sci::Position edgePosition = model.pdoc->FindColumn(line, column) - posLineStart; void SciTEBase::GoMessage(int dir) (inside SciTEBuffers.cxx) could apply...
GetColumn() and FindColumn() doesn't handle Unicode line endings
The two pdoc->GetColumn() inside void Editor::DelCharBack(bool allowLineStartDeletion) can be extracted. both pdoc->GetColumn() and pdoc->GetLineIndentation(lineCurrentPos) can be extracted.
The two pdoc->GetColumn() inside void Editor::DelCharBack(bool allowLineStartDeletion) can be extracted. if (pdoc->GetColumn(sel.Range(r).caret.Position()) <= pdoc->GetLineIndentation(lineCurrentPos) && pdoc->GetColumn(sel.Range(r).caret.Position()) > 0 && pdoc->backspaceUnindents) { The GetColumn() inside void Editor::Indent(bool forwards, bool lineIndent) seems can be replaced with some form of pdoc->FindColumn(newColumn)? const Sci::Position newColumn = std::max<Sci::Position>(0, ((column - 1)...