aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/CellBuffer.cxx8
-rw-r--r--src/CellBuffer.h1
-rw-r--r--src/Document.cxx189
-rw-r--r--src/Document.h7
-rw-r--r--src/EditView.cxx88
-rw-r--r--src/Editor.cxx688
-rw-r--r--src/Editor.h8
-rw-r--r--src/MarginView.cxx2
-rw-r--r--src/ScintillaBase.cxx22
-rw-r--r--win32/ScintillaWin.cxx26
10 files changed, 521 insertions, 518 deletions
diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx
index 697d75b54..177aa60e8 100644
--- a/src/CellBuffer.cxx
+++ b/src/CellBuffer.cxx
@@ -381,6 +381,10 @@ char CellBuffer::CharAt(Sci::Position position) const {
return substance.ValueAt(position);
}
+unsigned char CellBuffer::UCharAt(Sci::Position position) const {
+ return static_cast<unsigned char>(substance.ValueAt(position));
+}
+
void CellBuffer::GetCharRange(char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const {
if (lengthRetrieve <= 0)
return;
@@ -424,7 +428,7 @@ const char *CellBuffer::RangePointer(Sci::Position position, Sci::Position range
}
Sci::Position CellBuffer::GapPosition() const {
- return static_cast<Sci::Position>(substance.GapPosition());
+ return substance.GapPosition();
}
// The char* returned is to an allocation owned by the undo history
@@ -493,7 +497,7 @@ const char *CellBuffer::DeleteChars(Sci::Position position, Sci::Position delete
}
Sci::Position CellBuffer::Length() const {
- return static_cast<Sci::Position>(substance.Length());
+ return substance.Length();
}
void CellBuffer::Allocate(Sci::Position newSize) {
diff --git a/src/CellBuffer.h b/src/CellBuffer.h
index 935ea6e69..065c73795 100644
--- a/src/CellBuffer.h
+++ b/src/CellBuffer.h
@@ -135,6 +135,7 @@ public:
/// Retrieving positions outside the range of the buffer works and returns 0
char CharAt(Sci::Position position) const;
+ unsigned char UCharAt(Sci::Position position) const;
void GetCharRange(char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const;
char StyleAt(Sci::Position position) const;
void GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const;
diff --git a/src/Document.cxx b/src/Document.cxx
index 595c4ba9a..b0efee5e7 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -53,7 +53,7 @@ void LexInterface::Colourise(Sci::Position start, Sci::Position end) {
// code looks for child lines which may trigger styling.
performingStyle = true;
- const Sci::Position lengthDoc = static_cast<Sci::Position>(pdoc->Length());
+ const Sci::Position lengthDoc = pdoc->Length();
if (end == -1)
end = lengthDoc;
const Sci::Position len = end - start;
@@ -290,7 +290,7 @@ Sci::Line Document::MarkerNext(Sci::Line lineStart, int mask) const {
int Document::AddMark(Sci::Line line, int markerNum) {
if (line >= 0 && line <= LinesTotal()) {
const int prev = Markers()->AddMark(line, markerNum, LinesTotal());
- const DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
+ const DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
NotifyModified(mh);
return prev;
} else {
@@ -307,13 +307,13 @@ void Document::AddMarkSet(Sci::Line line, int valueSet) {
if (m & 1)
Markers()->AddMark(line, i, LinesTotal());
}
- const DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
+ const DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
NotifyModified(mh);
}
void Document::DeleteMark(Sci::Line line, int markerNum) {
Markers()->DeleteMark(line, markerNum, false);
- const DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
+ const DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
NotifyModified(mh);
}
@@ -353,12 +353,12 @@ Sci_Position SCI_METHOD Document::LineEnd(Sci_Position line) const {
if (line >= LinesTotal() - 1) {
return LineStart(line + 1);
} else {
- Sci::Position position = static_cast<Sci::Position>(LineStart(line + 1));
+ Sci::Position position = LineStart(line + 1);
if (SC_CP_UTF8 == dbcsCodePage) {
const unsigned char bytes[] = {
- static_cast<unsigned char>(cb.CharAt(position-3)),
- static_cast<unsigned char>(cb.CharAt(position-2)),
- static_cast<unsigned char>(cb.CharAt(position-1)),
+ cb.UCharAt(position-3),
+ cb.UCharAt(position-2),
+ cb.UCharAt(position-1),
};
if (UTF8IsSeparator(bytes)) {
return position - UTF8SeparatorLength;
@@ -384,11 +384,16 @@ void SCI_METHOD Document::SetErrorStatus(int status) {
}
Sci_Position SCI_METHOD Document::LineFromPosition(Sci_Position pos) const {
- return cb.LineFromPosition(static_cast<Sci::Position>(pos));
+ return cb.LineFromPosition(pos);
+}
+
+Sci::Line Document::SciLineFromPosition(Sci::Position pos) const {
+ // Avoids casting in callers for this very common function
+ return cb.LineFromPosition(pos);
}
Sci::Position Document::LineEndPosition(Sci::Position position) const {
- return static_cast<Sci::Position>(LineEnd(LineFromPosition(position)));
+ return LineEnd(LineFromPosition(position));
}
bool Document::IsLineEndPosition(Sci::Position position) const {
@@ -400,9 +405,9 @@ bool Document::IsPositionInLineEnd(Sci::Position position) const {
}
Sci::Position Document::VCHomePosition(Sci::Position position) const {
- const Sci::Line line = static_cast<Sci::Line>(LineFromPosition(position));
- const Sci::Position startPosition = static_cast<Sci::Position>(LineStart(line));
- const Sci::Position endLine = static_cast<Sci::Position>(LineEnd(line));
+ const Sci::Line line = SciLineFromPosition(position);
+ const Sci::Position startPosition = LineStart(line);
+ const Sci::Position endLine = LineEnd(line);
Sci::Position startText = startPosition;
while (startText < endLine && (cb.CharAt(startText) == ' ' || cb.CharAt(startText) == '\t'))
startText++;
@@ -416,7 +421,7 @@ int SCI_METHOD Document::SetLevel(Sci_Position line, int level) {
const int prev = Levels()->SetLevel(static_cast<Sci::Line>(line), level, LinesTotal());
if (prev != level) {
DocModification mh(SC_MOD_CHANGEFOLD | SC_MOD_CHANGEMARKER,
- static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, static_cast<Sci::Line>(line));
+ LineStart(line), 0, 0, 0, static_cast<Sci::Line>(line));
mh.foldLevelNow = level;
mh.foldLevelPrev = prev;
NotifyModified(mh);
@@ -446,7 +451,7 @@ Sci::Line Document::GetLastChild(Sci::Line lineParent, int level, Sci::Line last
const Sci::Line lookLastLine = (lastLine != -1) ? std::min(LinesTotal() - 1, lastLine) : -1;
Sci::Line lineMaxSubord = lineParent;
while (lineMaxSubord < maxLine - 1) {
- EnsureStyledTo(static_cast<Sci::Position>(LineStart(lineMaxSubord + 2)));
+ EnsureStyledTo(LineStart(lineMaxSubord + 2));
if (!IsSubordinate(level, GetLevel(lineMaxSubord + 1)))
break;
if ((lookLastLine != -1) && (lineMaxSubord >= lookLastLine) && !(GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG))
@@ -552,7 +557,7 @@ void Document::GetHighlightDelimiters(HighlightDelimiter &highlightDelimiter, Sc
}
Sci::Position Document::ClampPositionIntoDocument(Sci::Position pos) const {
- return std::clamp(pos, static_cast<Sci::Position>(0), static_cast<Sci::Position>(Length()));
+ return std::clamp(pos, static_cast<Sci::Position>(0), Length());
}
bool Document::IsCrLf(Sci::Position pos) const {
@@ -569,9 +574,9 @@ int Document::LenChar(Sci::Position pos) {
} else if (IsCrLf(pos)) {
return 2;
} else if (SC_CP_UTF8 == dbcsCodePage) {
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos));
+ const unsigned char leadByte = cb.UCharAt(pos);
const int widthCharBytes = UTF8BytesOfLead[leadByte];
- const Sci::Position lengthDoc = static_cast<Sci::Position>(Length());
+ const Sci::Position lengthDoc = Length();
if ((pos + widthCharBytes) > lengthDoc)
return static_cast<int>(lengthDoc - pos);
else
@@ -585,11 +590,11 @@ int Document::LenChar(Sci::Position pos) {
bool Document::InGoodUTF8(Sci::Position pos, Sci::Position &start, Sci::Position &end) const {
Sci::Position trail = pos;
- while ((trail>0) && (pos-trail < UTF8MaxBytes) && UTF8IsTrailByte(static_cast<unsigned char>(cb.CharAt(trail-1))))
+ while ((trail>0) && (pos-trail < UTF8MaxBytes) && UTF8IsTrailByte(cb.UCharAt(trail-1)))
trail--;
start = (trail > 0) ? trail-1 : trail;
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(start));
+ const unsigned char leadByte = cb.UCharAt(start);
const int widthCharBytes = UTF8BytesOfLead[leadByte];
if (widthCharBytes == 1) {
return false;
@@ -600,8 +605,8 @@ bool Document::InGoodUTF8(Sci::Position pos, Sci::Position &start, Sci::Position
// pos too far from lead
return false;
char charBytes[UTF8MaxBytes] = {static_cast<char>(leadByte),0,0,0};
- for (int b=1; b<widthCharBytes && ((start+b) < Length()); b++)
- charBytes[b] = cb.CharAt(static_cast<Sci::Position>(start+b));
+ for (Sci::Position b=1; b<widthCharBytes && ((start+b) < Length()); b++)
+ charBytes[b] = cb.CharAt(start+b);
const int utf8status = UTF8Classify(reinterpret_cast<const unsigned char *>(charBytes), widthCharBytes);
if (utf8status & UTF8MaskInvalid)
return false;
@@ -621,7 +626,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position
if (pos <= 0)
return 0;
if (pos >= Length())
- return static_cast<Sci::Position>(Length());
+ return Length();
// PLATFORM_ASSERT(pos > 0 && pos < Length());
if (checkLineEnd && IsCrLf(pos - 1)) {
@@ -633,7 +638,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position
if (dbcsCodePage) {
if (SC_CP_UTF8 == dbcsCodePage) {
- const unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));
+ const unsigned char ch = cb.UCharAt(pos);
// If ch is not a trail byte then pos is valid intercharacter position
if (UTF8IsTrailByte(ch)) {
Sci::Position startUTF = pos;
@@ -650,7 +655,7 @@ Sci::Position Document::MovePositionOutsideChar(Sci::Position pos, Sci::Position
} else {
// Anchor DBCS calculations at start of line because start of line can
// not be a DBCS trail byte.
- const Sci::Position posStartLine = static_cast<Sci::Position>(LineStart(LineFromPosition(pos)));
+ const Sci::Position posStartLine = LineStart(LineFromPosition(pos));
if (pos == posStartLine)
return pos;
@@ -688,13 +693,13 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const {
if (pos + increment <= 0)
return 0;
if (pos + increment >= Length())
- return static_cast<Sci::Position>(Length());
+ return Length();
if (dbcsCodePage) {
if (SC_CP_UTF8 == dbcsCodePage) {
if (increment == 1) {
// Simple forward movement case so can avoid some checks
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos));
+ const unsigned char leadByte = cb.UCharAt(pos);
if (UTF8IsAscii(leadByte)) {
// Single byte character or invalid
pos++;
@@ -702,7 +707,7 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const {
const int widthCharBytes = UTF8BytesOfLead[leadByte];
char charBytes[UTF8MaxBytes] = {static_cast<char>(leadByte),0,0,0};
for (int b=1; b<widthCharBytes; b++)
- charBytes[b] = cb.CharAt(static_cast<int>(pos+b));
+ charBytes[b] = cb.CharAt(pos+b);
const int utf8status = UTF8Classify(reinterpret_cast<const unsigned char *>(charBytes), widthCharBytes);
if (utf8status & UTF8MaskInvalid)
pos++;
@@ -712,7 +717,7 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const {
} else {
// Examine byte before position
pos--;
- const unsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));
+ const unsigned char ch = cb.UCharAt(pos);
// If ch is not a trail byte then pos is valid intercharacter position
if (UTF8IsTrailByte(ch)) {
// If ch is a trail byte in a valid UTF-8 character then return start of character
@@ -729,11 +734,11 @@ Sci::Position Document::NextPosition(Sci::Position pos, int moveDir) const {
const int mbsize = IsDBCSLeadByte(cb.CharAt(pos)) ? 2 : 1;
pos += mbsize;
if (pos > Length())
- pos = static_cast<Sci::Position>(Length());
+ pos = Length();
} else {
// Anchor DBCS calculations at start of line because start of line can
// not be a DBCS trail byte.
- const Sci::Position posStartLine = static_cast<Sci::Position>(LineStart(LineFromPosition(pos)));
+ const Sci::Position posStartLine = LineStart(LineFromPosition(pos));
// See http://msdn.microsoft.com/en-us/library/cc194792%28v=MSDN.10%29.aspx
// http://msdn.microsoft.com/en-us/library/cc194790.aspx
if ((pos - 1) <= posStartLine) {
@@ -775,7 +780,7 @@ Document::CharacterExtracted Document::CharacterAfter(Sci::Position position) co
if (position >= Length()) {
return CharacterExtracted(unicodeReplacementChar, 0);
}
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position));
+ const unsigned char leadByte = cb.UCharAt(position);
if (!dbcsCodePage || UTF8IsAscii(leadByte)) {
// Common case: ASCII character
return CharacterExtracted(leadByte, 1);
@@ -784,7 +789,7 @@ Document::CharacterExtracted Document::CharacterAfter(Sci::Position position) co
const int widthCharBytes = UTF8BytesOfLead[leadByte];
unsigned char charBytes[UTF8MaxBytes] = { leadByte, 0, 0, 0 };
for (int b = 1; b<widthCharBytes; b++)
- charBytes[b] = static_cast<unsigned char>(cb.CharAt(position + b));
+ charBytes[b] = cb.UCharAt(position + b);
const int utf8status = UTF8Classify(charBytes, widthCharBytes);
if (utf8status & UTF8MaskInvalid) {
// Treat as invalid and use up just one byte
@@ -794,7 +799,7 @@ Document::CharacterExtracted Document::CharacterAfter(Sci::Position position) co
}
} else {
if (IsDBCSLeadByte(leadByte) && ((position + 1) < Length())) {
- return CharacterExtracted::DBCS(leadByte, static_cast<unsigned char>(cb.CharAt(position + 1)));
+ return CharacterExtracted::DBCS(leadByte, cb.UCharAt(position + 1));
} else {
return CharacterExtracted(leadByte, 1);
}
@@ -805,7 +810,7 @@ Document::CharacterExtracted Document::CharacterBefore(Sci::Position position) c
if (position <= 0) {
return CharacterExtracted(unicodeReplacementChar, 0);
}
- const unsigned char previousByte = static_cast<unsigned char>(cb.CharAt(position - 1));
+ const unsigned char previousByte = cb.UCharAt(position - 1);
if (0 == dbcsCodePage) {
return CharacterExtracted(previousByte, 1);
}
@@ -823,7 +828,7 @@ Document::CharacterExtracted Document::CharacterBefore(Sci::Position position) c
const int widthCharBytes = static_cast<int>(endUTF - startUTF);
unsigned char charBytes[UTF8MaxBytes] = { 0, 0, 0, 0 };
for (int b = 0; b<widthCharBytes; b++)
- charBytes[b] = static_cast<unsigned char>(cb.CharAt(startUTF + b));
+ charBytes[b] = cb.UCharAt(startUTF + b);
const int utf8status = UTF8Classify(charBytes, widthCharBytes);
if (utf8status & UTF8MaskInvalid) {
// Treat as invalid and use up just one byte
@@ -844,7 +849,7 @@ Document::CharacterExtracted Document::CharacterBefore(Sci::Position position) c
// Return -1 on out-of-bounds
Sci_Position SCI_METHOD Document::GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const {
- Sci::Position pos = static_cast<Sci::Position>(positionStart);
+ Sci::Position pos = positionStart;
if (dbcsCodePage) {
const int increment = (characterOffset > 0) ? 1 : -1;
while (characterOffset != 0) {
@@ -855,7 +860,7 @@ Sci_Position SCI_METHOD Document::GetRelativePosition(Sci_Position positionStart
characterOffset -= increment;
}
} else {
- pos = static_cast<Sci::Position>(positionStart + characterOffset);
+ pos = positionStart + characterOffset;
if ((pos < 0) || (pos > Length()))
return INVALID_POSITION;
}
@@ -887,8 +892,7 @@ int SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Positio
int character;
int bytesInCharacter = 1;
if (dbcsCodePage) {
- const unsigned char leadByte = static_cast<unsigned char>(
- cb.CharAt(static_cast<Sci::Position>(position)));
+ const unsigned char leadByte = cb.UCharAt(position);
if (SC_CP_UTF8 == dbcsCodePage) {
if (UTF8IsAscii(leadByte)) {
// Single byte character or invalid
@@ -897,8 +901,7 @@ int SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Positio
const int widthCharBytes = UTF8BytesOfLead[leadByte];
unsigned char charBytes[UTF8MaxBytes] = {leadByte,0,0,0};
for (int b=1; b<widthCharBytes; b++)
- charBytes[b] = static_cast<unsigned char>(
- cb.CharAt(static_cast<Sci::Position>(position+b)));
+ charBytes[b] = cb.UCharAt(position+b);
const int utf8status = UTF8Classify(charBytes, widthCharBytes);
if (utf8status & UTF8MaskInvalid) {
// Report as singleton surrogate values which are invalid Unicode
@@ -911,14 +914,13 @@ int SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Positio
} else {
if (IsDBCSLeadByte(leadByte)) {
bytesInCharacter = 2;
- character = (leadByte << 8) | static_cast<unsigned char>(
- cb.CharAt(static_cast<Sci::Position>(position+1)));
+ character = (leadByte << 8) | cb.UCharAt(position+1);
} else {
character = leadByte;
}
}
} else {
- character = cb.CharAt(static_cast<Sci::Position>(position));
+ character = cb.CharAt(position);
}
if (pWidth) {
*pWidth = bytesInCharacter;
@@ -1095,7 +1097,7 @@ Sci::Position Document::InsertString(Sci::Position position, const char *s, Sci:
0, s));
if (insertionSet) {
s = insertion.c_str();
- insertLength = static_cast<int>(insertion.length());
+ insertLength = insertion.length();
}
NotifyModified(
DocModification(
@@ -1128,8 +1130,8 @@ void Document::ChangeInsertion(const char *s, Sci::Position length) {
int SCI_METHOD Document::AddData(const char *data, Sci_Position length) {
try {
- const Sci::Position position = static_cast<Sci::Position>(Length());
- InsertString(position, data, static_cast<Sci::Position>(length));
+ const Sci::Position position = Length();
+ InsertString(position, data, length);
} catch (std::bad_alloc &) {
return SC_STATUS_BADALLOC;
} catch (...) {
@@ -1326,8 +1328,8 @@ static std::string CreateIndentation(Sci::Position indent, int tabSize, bool ins
int SCI_METHOD Document::GetLineIndentation(Sci_Position line) {
int indent = 0;
if ((line >= 0) && (line < LinesTotal())) {
- const Sci::Position lineStart = static_cast<Sci::Position>(LineStart(line));
- const Sci::Position length = static_cast<Sci::Position>(Length());
+ const Sci::Position lineStart = LineStart(line);
+ const Sci::Position length = Length();
for (Sci::Position i = lineStart; i < length; i++) {
const char ch = cb.CharAt(i);
if (ch == ' ')
@@ -1347,12 +1349,12 @@ Sci::Position Document::SetLineIndentation(Sci::Line line, Sci::Position indent)
indent = 0;
if (indent != indentOfLine) {
std::string linebuf = CreateIndentation(indent, tabInChars, !useTabs);
- const Sci::Position thisLineStart = static_cast<Sci::Position>(LineStart(line));
+ const Sci::Position thisLineStart = LineStart(line);
const Sci::Position indentPos = GetLineIndentPosition(line);
UndoGroup ug(this);
DeleteChars(thisLineStart, indentPos - thisLineStart);
return thisLineStart + InsertString(thisLineStart, linebuf.c_str(),
- static_cast<Sci::Position>(linebuf.length()));
+ linebuf.length());
} else {
return GetLineIndentPosition(line);
}
@@ -1361,8 +1363,8 @@ Sci::Position Document::SetLineIndentation(Sci::Line line, Sci::Position indent)
Sci::Position Document::GetLineIndentPosition(Sci::Line line) const {
if (line < 0)
return 0;
- Sci::Position pos = static_cast<Sci::Position>(LineStart(line));
- const Sci::Position length = static_cast<Sci::Position>(Length());
+ Sci::Position pos = LineStart(line);
+ const Sci::Position length = Length();
while ((pos < length) && IsSpaceOrTab(cb.CharAt(pos))) {
pos++;
}
@@ -1371,9 +1373,9 @@ Sci::Position Document::GetLineIndentPosition(Sci::Line line) const {
Sci::Position Document::GetColumn(Sci::Position pos) {
Sci::Position column = 0;
- const Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos));
+ const Sci::Line line = SciLineFromPosition(pos);
if ((line >= 0) && (line < LinesTotal())) {
- for (Sci::Position i = static_cast<Sci::Position>(LineStart(line)); i < pos;) {
+ for (Sci::Position i = LineStart(line); i < pos;) {
const char ch = cb.CharAt(i);
if (ch == '\t') {
column = NextTab(column, tabInChars);
@@ -1421,7 +1423,7 @@ Sci::Position Document::CountUTF16(Sci::Position startPos, Sci::Position endPos)
}
Sci::Position Document::FindColumn(Sci::Line line, Sci::Position column) {
- Sci::Position position = static_cast<Sci::Position>(LineStart(line));
+ Sci::Position position = LineStart(line);
if ((line >= 0) && (line < LinesTotal())) {
Sci::Position columnCurrent = 0;
while ((columnCurrent < column) && (position < Length())) {
@@ -1526,10 +1528,10 @@ int Document::Options() const {
}
bool Document::IsWhiteLine(Sci::Line line) const {
- Sci::Position currentChar = static_cast<Sci::Position>(LineStart(line));
- const Sci::Position endLine = static_cast<Sci::Position>(LineEnd(line));
+ Sci::Position currentChar = LineStart(line);
+ const Sci::Position endLine = LineEnd(line);
while (currentChar < endLine) {
- if (cb.CharAt(currentChar) != ' ' && cb.CharAt(currentChar) != '\t') {
+ if (!IsSpaceOrTab(cb.CharAt(currentChar))) {
return false;
}
++currentChar;
@@ -1538,7 +1540,7 @@ bool Document::IsWhiteLine(Sci::Line line) const {
}
Sci::Position Document::ParaUp(Sci::Position pos) const {
- Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos));
+ Sci::Line line = SciLineFromPosition(pos);
line--;
while (line >= 0 && IsWhiteLine(line)) { // skip empty lines
line--;
@@ -1547,11 +1549,11 @@ Sci::Position Document::ParaUp(Sci::Position pos) const {
line--;
}
line++;
- return static_cast<Sci::Position>(LineStart(line));
+ return LineStart(line);
}
Sci::Position Document::ParaDown(Sci::Position pos) const {
- Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos));
+ Sci::Line line = SciLineFromPosition(pos);
while (line < LinesTotal() && !IsWhiteLine(line)) { // skip non-empty lines
line++;
}
@@ -1559,9 +1561,9 @@ Sci::Position Document::ParaDown(Sci::Position pos) const {
line++;
}
if (line < LinesTotal())
- return static_cast<Sci::Position>(LineStart(line));
+ return LineStart(line);
else // end of a document
- return static_cast<Sci::Position>(LineEnd(line-1));
+ return LineEnd(line-1);
}
bool Document::IsASCIIWordByte(unsigned char ch) const {
@@ -1817,7 +1819,7 @@ void Document::SetCaseFolder(CaseFolder *pcf_) {
}
Document::CharacterExtracted Document::ExtractCharacter(Sci::Position position) const {
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position));
+ const unsigned char leadByte = cb.UCharAt(position);
if (UTF8IsAscii(leadByte)) {
// Common case: ASCII character
return CharacterExtracted(leadByte, 1);
@@ -1825,7 +1827,7 @@ Document::CharacterExtracted Document::ExtractCharacter(Sci::Position position)
const int widthCharBytes = UTF8BytesOfLead[leadByte];
unsigned char charBytes[UTF8MaxBytes] = { leadByte, 0, 0, 0 };
for (int b=1; b<widthCharBytes; b++)
- charBytes[b] = static_cast<unsigned char>(cb.CharAt(position + b));
+ charBytes[b] = cb.UCharAt(position + b);
const int utf8status = UTF8Classify(charBytes, widthCharBytes);
if (utf8status & UTF8MaskInvalid) {
// Treat as invalid and use up just one byte
@@ -1900,7 +1902,7 @@ Sci::Position Document::FindText(Sci::Position minPos, Sci::Position maxPos, con
size_t indexSearch = 0;
bool characterMatches = true;
for (;;) {
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(posIndexDocument));
+ const unsigned char leadByte = cb.UCharAt(posIndexDocument);
bytes[0] = leadByte;
int widthChar = 1;
if (!UTF8IsAscii(leadByte)) {
@@ -2024,7 +2026,7 @@ int Document::GetCharsOfClass(CharClassify::cc characterClass, unsigned char *bu
}
void SCI_METHOD Document::StartStyling(Sci_Position position) {
- endStyled = static_cast<Sci::Position>(position);
+ endStyled = position;
}
bool SCI_METHOD Document::SetStyleFor(Sci_Position length, char style) {
@@ -2033,12 +2035,12 @@ bool SCI_METHOD Document::SetStyleFor(Sci_Position length, char style) {
} else {
enteredStyling++;
const Sci::Position prevEndStyled = endStyled;
- if (cb.SetStyleFor(static_cast<Sci::Position>(endStyled), static_cast<Sci::Position>(length), style)) {
+ if (cb.SetStyleFor(endStyled, length, style)) {
const DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,
- prevEndStyled, static_cast<Sci::Position>(length));
+ prevEndStyled, length);
NotifyModified(mh);
}
- endStyled += static_cast<Sci::Position>(length);
+ endStyled += length;
enteredStyling--;
return true;
}
@@ -2076,8 +2078,8 @@ void Document::EnsureStyledTo(Sci::Position pos) {
if ((enteredStyling == 0) && (pos > GetEndStyled())) {
IncrementStyleClock();
if (pli && !pli->UseContainerLexing()) {
- const Sci::Line lineEndStyled = static_cast<Sci::Line>(LineFromPosition(GetEndStyled()));
- const Sci::Position endStyledTo = static_cast<Sci::Position>(LineStart(lineEndStyled));
+ const Sci::Line lineEndStyled = SciLineFromPosition(GetEndStyled());
+ const Sci::Position endStyledTo = LineStart(lineEndStyled);
pli->Colourise(endStyledTo, pos);
} else {
// Ask the watchers to style, and stop as soon as one responds.
@@ -2099,11 +2101,11 @@ void Document::StyleToAdjustingLineDuration(Sci::Position pos) {
// Most recent value contributes 25% to smoothed value.
const double alpha = 0.25;
- const Sci::Line lineFirst = static_cast<Sci::Line>(LineFromPosition(GetEndStyled()));
+ const Sci::Line lineFirst = SciLineFromPosition(GetEndStyled());
ElapsedTime etStyling;
EnsureStyledTo(pos);
const double durationStyling = etStyling.Duration();
- const Sci::Line lineLast = static_cast<Sci::Line>(LineFromPosition(GetEndStyled()));
+ const Sci::Line lineLast = SciLineFromPosition(GetEndStyled());
if (lineLast >= lineFirst + 8) {
// Only adjust for styling multiple lines to avoid instability
const double durationOneLine = durationStyling / (lineLast - lineFirst);
@@ -2134,7 +2136,7 @@ void Document::SetLexInterface(LexInterface *pLexInterface) {
int SCI_METHOD Document::SetLineState(Sci_Position line, int state) {
const int statePrevious = States()->SetLineState(static_cast<Sci::Line>(line), state);
if (state != statePrevious) {
- const DocModification mh(SC_MOD_CHANGELINESTATE, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0,
+ const DocModification mh(SC_MOD_CHANGELINESTATE, LineStart(line), 0, 0, 0,
static_cast<Sci::Line>(line));
NotifyModified(mh);
}
@@ -2150,8 +2152,8 @@ Sci::Line Document::GetMaxLineState() const {
}
void SCI_METHOD Document::ChangeLexerState(Sci_Position start, Sci_Position end) {
- const DocModification mh(SC_MOD_LEXERSTATE, static_cast<Sci::Position>(start),
- static_cast<Sci::Position>(end-start), 0, 0, 0);
+ const DocModification mh(SC_MOD_LEXERSTATE, start,
+ end-start, 0, 0, 0);
NotifyModified(mh);
}
@@ -2163,20 +2165,20 @@ StyledText Document::MarginStyledText(Sci::Line line) const {
void Document::MarginSetText(Sci::Line line, const char *text) {
Margins()->SetText(line, text);
- const DocModification mh(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)),
+ const DocModification mh(SC_MOD_CHANGEMARGIN, LineStart(line),
0, 0, 0, line);
NotifyModified(mh);
}
void Document::MarginSetStyle(Sci::Line line, int style) {
Margins()->SetStyle(line, style);
- NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)),
+ NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line),
0, 0, 0, line));
}
void Document::MarginSetStyles(Sci::Line line, const unsigned char *styles) {
Margins()->SetStyles(line, styles);
- NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)),
+ NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line),
0, 0, 0, line));
}
@@ -2199,7 +2201,7 @@ void Document::AnnotationSetText(Sci::Line line, const char *text) {
const Sci::Line linesBefore = AnnotationLines(line);
Annotations()->SetText(line, text);
const int linesAfter = AnnotationLines(line);
- DocModification mh(SC_MOD_CHANGEANNOTATION, static_cast<Sci::Position>(LineStart(line)),
+ DocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line),
0, 0, 0, line);
mh.annotationLinesAdded = linesAfter - linesBefore;
NotifyModified(mh);
@@ -2208,7 +2210,8 @@ void Document::AnnotationSetText(Sci::Line line, const char *text) {
void Document::AnnotationSetStyle(Sci::Line line, int style) {
Annotations()->SetStyle(line, style);
- const DocModification mh(SC_MOD_CHANGEANNOTATION, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
+ const DocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line),
+ 0, 0, 0, line);
NotifyModified(mh);
}
@@ -2240,7 +2243,7 @@ void SCI_METHOD Document::DecorationSetCurrentIndicator(int indicator) {
void SCI_METHOD Document::DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) {
const FillResult<Sci::Position> fr = decorations->FillRange(
- static_cast<Sci::Position>(position), value, static_cast<Sci::Position>(fillLength));
+ position, value, fillLength);
if (fr.changed) {
const DocModification mh(SC_MOD_CHANGEINDICATOR | SC_PERFORMED_USER,
fr.position, fr.fillLength);
@@ -2388,7 +2391,7 @@ Sci::Position Document::WordPartLeft(Sci::Position pos) const {
Sci::Position Document::WordPartRight(Sci::Position pos) const {
CharacterExtracted ceStart = CharacterAfter(pos);
- const Sci::Position length = static_cast<Sci::Position>(Length());
+ const Sci::Position length = Length();
if (IsWordPartSeparator(ceStart.character)) {
while (pos < length && IsWordPartSeparator(CharacterAfter(pos).character))
pos += CharacterAfter(pos).widthBytes;
@@ -2540,12 +2543,12 @@ public:
startPos = doc->MovePositionOutsideChar(minPos, 1, true);
endPos = doc->MovePositionOutsideChar(maxPos, 1, true);
- lineRangeStart = static_cast<Sci::Line>(doc->LineFromPosition(startPos));
- lineRangeEnd = static_cast<Sci::Line>(doc->LineFromPosition(endPos));
+ lineRangeStart = doc->SciLineFromPosition(startPos);
+ lineRangeEnd = doc->SciLineFromPosition(endPos);
lineRangeBreak = lineRangeEnd + increment;
}
Range LineRange(Sci::Line line) const {
- Range range(static_cast<Sci::Position>(doc->LineStart(line)), static_cast<Sci::Position>(doc->LineEnd(line)));
+ Range range(doc->LineStart(line), doc->LineEnd(line));
if (increment == 1) {
if (line == lineRangeStart)
range.start = startPos;
@@ -2985,8 +2988,8 @@ Sci::Position BuiltinRegex::FindText(Document *doc, Sci::Position minPos, Sci::P
const char searchEndPrev = (*length > 1) ? s[*length - 2] : '\0';
const bool searchforLineEnd = (searchEnd == '$') && (searchEndPrev != '\\');
for (Sci::Line line = resr.lineRangeStart; line != resr.lineRangeBreak; line += resr.increment) {
- Sci::Position startOfLine = static_cast<Sci::Position>(doc->LineStart(line));
- Sci::Position endOfLine = static_cast<Sci::Position>(doc->LineEnd(line));
+ Sci::Position startOfLine = doc->LineStart(line);
+ Sci::Position endOfLine = doc->LineEnd(line);
if (resr.increment == 1) {
if (line == resr.lineRangeStart) {
if ((resr.startPos != startOfLine) && searchforLineStart)
@@ -3043,7 +3046,7 @@ Sci::Position BuiltinRegex::FindText(Document *doc, Sci::Position minPos, Sci::P
const char *BuiltinRegex::SubstituteByPosition(Document *doc, const char *text, Sci::Position *length) {
substituted.clear();
- const DocumentIndexer di(doc, static_cast<Sci::Position>(doc->Length()));
+ const DocumentIndexer di(doc, doc->Length());
search.GrabMatches(di);
for (int j = 0; j < *length; j++) {
if (text[j] == '\\') {
@@ -3089,7 +3092,7 @@ const char *BuiltinRegex::SubstituteByPosition(Document *doc, const char *text,
substituted.push_back(text[j]);
}
}
- *length = static_cast<int>(substituted.length());
+ *length = substituted.length();
return substituted.c_str();
}
diff --git a/src/Document.h b/src/Document.h
index d5d0a4d2e..387af74f0 100644
--- a/src/Document.h
+++ b/src/Document.h
@@ -290,6 +290,7 @@ public:
void SCI_METHOD SetErrorStatus(int status) override;
Sci_Position SCI_METHOD LineFromPosition(Sci_Position pos) const override;
+ Sci::Line SciLineFromPosition(Sci::Position pos) const; // Avoids casting LineFromPosition
Sci::Position ClampPositionIntoDocument(Sci::Position pos) const;
bool ContainsLineEnd(const char *s, Sci::Position length) const { return cb.ContainsLineEnd(s, length); }
bool IsCrLf(Sci::Position pos) const;
@@ -360,10 +361,10 @@ public:
char CharAt(Sci::Position position) const { return cb.CharAt(position); }
void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const override {
- cb.GetCharRange(buffer, static_cast<Sci::Position>(position), static_cast<Sci::Position>(lengthRetrieve));
+ cb.GetCharRange(buffer, position, lengthRetrieve);
}
- char SCI_METHOD StyleAt(Sci_Position position) const override { return cb.StyleAt(static_cast<Sci::Position>(position)); }
- int StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(static_cast<Sci::Position>(position))); }
+ char SCI_METHOD StyleAt(Sci_Position position) const override { return cb.StyleAt(position); }
+ int StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(position)); }
void GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const {
cb.GetStyleRange(buffer, position, lengthRetrieve);
}
diff --git a/src/EditView.cxx b/src/EditView.cxx
index acf7b3b84..e9e369e79 100644
--- a/src/EditView.cxx
+++ b/src/EditView.cxx
@@ -333,10 +333,10 @@ void EditView::RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewSt
}
LineLayout *EditView::RetrieveLineLayout(Sci::Line lineNumber, const EditModel &model) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineNumber));
- const Sci::Position posLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(lineNumber + 1));
+ const Sci::Position posLineStart = model.pdoc->LineStart(lineNumber);
+ const Sci::Position posLineEnd = model.pdoc->LineStart(lineNumber + 1);
PLATFORM_ASSERT(posLineEnd >= posLineStart);
- const Sci::Line lineCaret = static_cast<Sci::Line>(model.pdoc->LineFromPosition(model.sel.MainCaret()));
+ const Sci::Line lineCaret = model.pdoc->SciLineFromPosition(model.sel.MainCaret());
return llc.Retrieve(lineNumber, lineCaret,
static_cast<int>(posLineEnd - posLineStart), model.pdoc->GetStyleClock(),
model.LinesOnScreen() + 1, model.pdoc->LinesTotal());
@@ -353,8 +353,8 @@ void EditView::LayoutLine(const EditModel &model, Sci::Line line, Surface *surfa
PLATFORM_ASSERT(line < model.pdoc->LinesTotal());
PLATFORM_ASSERT(ll->chars != NULL);
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
- Sci::Position posLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
+ Sci::Position posLineEnd = model.pdoc->LineStart(line + 1);
// If the line is very long, limit the treatment to a length that should fit in the viewport
if (posLineEnd >(posLineStart + ll->maxLineLength)) {
posLineEnd = posLineStart + ll->maxLineLength;
@@ -362,7 +362,7 @@ void EditView::LayoutLine(const EditModel &model, Sci::Line line, Surface *surfa
if (ll->validity == LineLayout::llCheckTextAndStyle) {
Sci::Position lineLength = posLineEnd - posLineStart;
if (!vstyle.viewEOL) {
- lineLength = static_cast<Sci::Position>(model.pdoc->LineEnd(line)) - posLineStart;
+ lineLength = model.pdoc->LineEnd(line) - posLineStart;
}
if (lineLength == ll->numCharsInLine) {
// See if chars, styles, indicators, are all the same
@@ -593,12 +593,12 @@ Point EditView::LocationFromPosition(Surface *surface, const EditModel &model, S
Point pt;
if (pos.Position() == INVALID_POSITION)
return pt;
- Sci::Line lineDoc = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos.Position()));
- Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ Sci::Line lineDoc = model.pdoc->SciLineFromPosition(pos.Position());
+ Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
if ((pe & peLineEnd) && (lineDoc > 0) && (pos.Position() == posLineStart)) {
// Want point at end of first line
lineDoc--;
- posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ posLineStart = model.pdoc->LineStart(lineDoc);
}
const Sci::Line lineVisible = model.pcs->DisplayFromDoc(lineDoc);
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
@@ -619,7 +619,7 @@ Range EditView::RangeDisplayLine(Surface *surface, const EditModel &model, Sci::
return rangeSubLine;
}
const Sci::Line lineDoc = model.pcs->DocFromDisplay(lineVisible);
- const Sci::Position positionLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ const Sci::Position positionLineStart = model.pdoc->LineStart(lineDoc);
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
if (surface && ll) {
LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
@@ -628,7 +628,7 @@ Range EditView::RangeDisplayLine(Surface *surface, const EditModel &model, Sci::
if (subLine < ll->lines) {
rangeSubLine = ll->SubLineRange(subLine);
if (subLine == ll->lines-1) {
- rangeSubLine.end = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1)) -
+ rangeSubLine.end = model.pdoc->LineStart(lineDoc + 1) -
positionLineStart;
}
}
@@ -648,8 +648,8 @@ SelectionPosition EditView::SPositionFromLocation(Surface *surface, const EditMo
return SelectionPosition(INVALID_POSITION);
if (lineDoc >= model.pdoc->LinesTotal())
return SelectionPosition(canReturnInvalid ? INVALID_POSITION :
- static_cast<Sci::Position>(model.pdoc->Length()));
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ model.pdoc->Length());
+ const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
if (surface && ll) {
LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
@@ -692,7 +692,7 @@ SelectionPosition EditView::SPositionFromLocation(Surface *surface, const EditMo
SelectionPosition EditView::SPositionFromLineX(Surface *surface, const EditModel &model, Sci::Line lineDoc, int x, const ViewStyle &vs) {
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
if (surface && ll) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
const Range rangeSubLine = ll->SubLineRange(0);
const XYPOSITION subLineStart = ll->positions[rangeSubLine.start];
@@ -709,12 +709,12 @@ SelectionPosition EditView::SPositionFromLineX(Surface *surface, const EditModel
}
Sci::Line EditView::DisplayFromPosition(Surface *surface, const EditModel &model, Sci::Position pos, const ViewStyle &vs) {
- const Sci::Line lineDoc = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos));
+ const Sci::Line lineDoc = model.pdoc->SciLineFromPosition(pos);
Sci::Line lineDisplay = model.pcs->DisplayFromDoc(lineDoc);
AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
if (surface && ll) {
LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
const Sci::Position posInLine = pos - posLineStart;
lineDisplay--; // To make up for first increment ahead.
for (int subLine = 0; subLine < ll->lines; subLine++) {
@@ -727,11 +727,11 @@ Sci::Line EditView::DisplayFromPosition(Surface *surface, const EditModel &model
}
Sci::Position EditView::StartEndDisplayLine(Surface *surface, const EditModel &model, Sci::Position pos, bool start, const ViewStyle &vs) {
- const Sci::Line line = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos));
+ const Sci::Line line = model.pdoc->SciLineFromPosition(pos);
AutoLineLayout ll(llc, RetrieveLineLayout(line, model));
Sci::Position posRet = INVALID_POSITION;
if (surface && ll) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
LayoutLine(model, line, surface, vs, ll, model.wrapWidth);
const Sci::Position posInLine = pos - posLineStart;
if (posInLine <= ll->maxLineLength) {
@@ -859,14 +859,14 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
PRectangle rcLine, Sci::Line line, Sci::Position lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,
ColourOptional background) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
PRectangle rcSegment = rcLine;
const bool lastSubLine = subLine == (ll->lines - 1);
XYPOSITION virtualSpace = 0;
if (lastSubLine) {
const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;
- virtualSpace = model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line))) * spaceWidth;
+ virtualSpace = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)) * spaceWidth;
}
const XYPOSITION xEol = static_cast<XYPOSITION>(ll->positions[lineEnd] - subLineStart);
@@ -876,9 +876,9 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
rcSegment.right = xEol + xStart + virtualSpace;
surface->FillRectangle(rcSegment, background.isSet ? background : vsDraw.styles[ll->styles[ll->numCharsInLine]].back);
if (!hideSelection && ((vsDraw.selAlpha == SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA))) {
- const SelectionSegment virtualSpaceRange(SelectionPosition(static_cast<Sci::Position>(model.pdoc->LineEnd(line))),
- SelectionPosition(static_cast<Sci::Position>(model.pdoc->LineEnd(line)),
- model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line)))));
+ const SelectionSegment virtualSpaceRange(SelectionPosition(model.pdoc->LineEnd(line)),
+ SelectionPosition(model.pdoc->LineEnd(line),
+ model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line))));
for (size_t r = 0; r<model.sel.Count(); r++) {
const int alpha = (r == model.sel.Main()) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
if (alpha == SC_ALPHA_NOALPHA) {
@@ -901,7 +901,7 @@ void EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle
int eolInSelection = 0;
int alpha = SC_ALPHA_NOALPHA;
if (!hideSelection) {
- const Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1));
+ const Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1);
eolInSelection = (lastSubLine == true) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;
alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
}
@@ -1038,7 +1038,7 @@ static void DrawIndicator(int indicNum, Sci::Position startPos, Sci::Position en
static void DrawIndicators(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
Sci::Line line, int xStart, PRectangle rcLine, int subLine, Sci::Position lineEnd, bool under, Sci::Position hoverIndicatorPos) {
// Draw decorators
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
const Sci::Position lineStart = ll->LineStart(subLine);
const Sci::Position posLineEnd = posLineStart + lineEnd;
@@ -1108,14 +1108,14 @@ void EditView::DrawFoldDisplayText(Surface *surface, const EditModel &model, con
int eolInSelection = 0;
int alpha = SC_ALPHA_NOALPHA;
if (!hideSelection) {
- const Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1));
+ const Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1);
eolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;
alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
}
const XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;
const XYPOSITION virtualSpace = model.sel.VirtualSpaceFor(
- static_cast<Sci::Position>(model.pdoc->LineEnd(line))) * spaceWidth;
+ model.pdoc->LineEnd(line)) * spaceWidth;
rcSegment.left = xStart + static_cast<XYPOSITION>(ll->positions[ll->numCharsInLine] - subLineStart) + virtualSpace + vsDraw.aveCharWidth;
rcSegment.right = rcSegment.left + static_cast<XYPOSITION>(widthFoldDisplayText);
@@ -1316,7 +1316,7 @@ void EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewSt
const bool drawDrag = model.posDrag.IsValid();
if (hideSelection && !drawDrag)
return;
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
// For each selection draw
for (size_t r = 0; (r<model.sel.Count()) || drawDrag; r++) {
const bool mainCaret = r == model.sel.Main();
@@ -1550,12 +1550,12 @@ static void DrawMarkUnderline(Surface *surface, const EditModel &model, const Vi
static void DrawTranslucentSelection(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,
Sci::Line line, PRectangle rcLine, int subLine, Range lineRange, int xStart) {
if ((vsDraw.selAlpha != SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha != SC_ALPHA_NOALPHA)) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
const XYACCUMULATOR subLineStart = ll->positions[lineRange.start];
// For each selection draw
Sci::Position virtualSpaces = 0;
if (subLine == (ll->lines - 1)) {
- virtualSpaces = model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line)));
+ virtualSpaces = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line));
}
const SelectionPosition posStart(posLineStart + lineRange.start);
const SelectionPosition posEnd(posLineStart + lineRange.end, virtualSpaces);
@@ -1815,7 +1815,7 @@ void EditView::DrawIndentGuidesOverEmpty(Surface *surface, const EditModel &mode
Sci::Line line, Sci::Line lineVisible, PRectangle rcLine, int xStart, int subLine) {
if ((vsDraw.viewIndentationGuides == ivLookForward || vsDraw.viewIndentationGuides == ivLookBoth)
&& (subLine == 0)) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
int indentSpace = model.pdoc->GetLineIndentation(line);
int xStartText = static_cast<int>(ll->positions[model.pdoc->GetLineIndentPosition(line) - posLineStart]);
@@ -1876,7 +1876,7 @@ void EditView::DrawLine(Surface *surface, const EditModel &model, const ViewStyl
// See if something overrides the line background color.
const ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);
- const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
+ const Sci::Position posLineStart = model.pdoc->LineStart(line);
const Range lineRange = ll->SubLineRange(subLine);
const XYACCUMULATOR subLineStart = ll->positions[lineRange.start];
@@ -1990,7 +1990,7 @@ void EditView::PaintText(Surface *surfaceWindow, const EditModel &model, PRectan
SelectionPosition posCaret = model.sel.RangeMain().caret;
if (model.posDrag.IsValid())
posCaret = model.posDrag;
- const Sci::Line lineCaret = static_cast<Sci::Line>(model.pdoc->LineFromPosition(posCaret.Position()));
+ const Sci::Line lineCaret = model.pdoc->SciLineFromPosition(posCaret.Position());
PRectangle rcTextArea = rcClient;
if (vsDraw.marginInside) {
@@ -2060,8 +2060,8 @@ void EditView::PaintText(Surface *surfaceWindow, const EditModel &model, PRectan
rcLine.top = static_cast<XYPOSITION>(ypos);
rcLine.bottom = static_cast<XYPOSITION>(ypos + vsDraw.lineHeight);
- const Range rangeLine(static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)),
- static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1)));
+ const Range rangeLine(model.pdoc->LineStart(lineDoc),
+ model.pdoc->LineStart(lineDoc + 1));
// Highlight the current braces if any
ll->SetBracesHighlight(rangeLine, model.braces, static_cast<char>(model.bracesMatchStyle),
@@ -2150,7 +2150,7 @@ void EditView::FillLineRemainder(Surface *surface, const EditModel &model, const
int eolInSelection = 0;
int alpha = SC_ALPHA_NOALPHA;
if (!hideSelection) {
- const Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1));
+ const Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1);
eolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;
alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
}
@@ -2260,21 +2260,21 @@ Sci::Position EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface *
vsPrint.Refresh(*surfaceMeasure, model.pdoc->tabInChars); // Recalculate fixedColumnWidth
}
- const Sci::Line linePrintStart = static_cast<Sci::Line>(
- model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMin)));
+ const Sci::Line linePrintStart =
+ model.pdoc->SciLineFromPosition(static_cast<Sci::Position>(pfr->chrg.cpMin));
Sci::Line linePrintLast = linePrintStart + (pfr->rc.bottom - pfr->rc.top) / vsPrint.lineHeight - 1;
if (linePrintLast < linePrintStart)
linePrintLast = linePrintStart;
- const Sci::Line linePrintMax = static_cast<Sci::Line>(
- model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMax)));
+ const Sci::Line linePrintMax =
+ model.pdoc->SciLineFromPosition(static_cast<Sci::Position>(pfr->chrg.cpMax));
if (linePrintLast > linePrintMax)
linePrintLast = linePrintMax;
//Platform::DebugPrintf("Formatting lines=[%0d,%0d,%0d] top=%0d bottom=%0d line=%0d %0d\n",
// linePrintStart, linePrintLast, linePrintMax, pfr->rc.top, pfr->rc.bottom, vsPrint.lineHeight,
// surfaceMeasure->Height(vsPrint.styles[STYLE_LINENUMBER].font));
- Sci::Position endPosPrint = static_cast<Sci::Position>(model.pdoc->Length());
+ Sci::Position endPosPrint = model.pdoc->Length();
if (linePrintLast < model.pdoc->LinesTotal())
- endPosPrint = static_cast<Sci::Position>(model.pdoc->LineStart(linePrintLast + 1));
+ endPosPrint = model.pdoc->LineStart(linePrintLast + 1);
// Ensure we are styled to where we are formatting.
model.pdoc->EnsureStyledTo(endPosPrint);
@@ -2316,7 +2316,7 @@ Sci::Position EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface *
// line of the page.
if (visibleLine == 0) {
const Sci::Position startWithinLine = nPrintPos -
- static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
+ model.pdoc->LineStart(lineDoc);
for (int iwl = 0; iwl < ll.lines - 1; iwl++) {
if (ll.LineStart(iwl) <= startWithinLine && ll.LineStart(iwl + 1) >= startWithinLine) {
visibleLine = -iwl;
@@ -2359,7 +2359,7 @@ Sci::Position EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface *
}
visibleLine++;
if (iwl == ll.lines - 1)
- nPrintPos = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1));
+ nPrintPos = model.pdoc->LineStart(lineDoc + 1);
else
nPrintPos += ll.LineStart(iwl + 1) - ll.LineStart(iwl);
}
diff --git a/src/Editor.cxx b/src/Editor.cxx
index ca23b0030..e3e90b5de 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -355,7 +355,7 @@ SelectionPosition Editor::ClampPositionIntoDocument(SelectionPosition sp) const
if (sp.Position() < 0) {
return SelectionPosition(0);
} else if (sp.Position() > pdoc->Length()) {
- return SelectionPosition(static_cast<Sci::Position>(pdoc->Length()));
+ return SelectionPosition(pdoc->Length());
} else {
// If not at end of line then set offset to 0
if (!pdoc->IsLineEndPosition(sp.Position()))
@@ -416,7 +416,7 @@ Sci::Position Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool
SelectionPosition Editor::SPositionFromLineX(Sci::Line lineDoc, int x) {
RefreshStyleData();
if (lineDoc >= pdoc->LinesTotal())
- return SelectionPosition(static_cast<Sci::Position>(pdoc->Length()));
+ return SelectionPosition(pdoc->Length());
//Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);
AutoSurface surface(this);
return view.SPositionFromLineX(surface, *this, lineDoc, x, vs);
@@ -435,7 +435,7 @@ void Editor::SetTopLine(Sci::Line topLineNew) {
topLine = topLineNew;
ContainerNeedsUpdate(SC_UPDATE_V_SCROLL);
}
- posTopLine = static_cast<Sci::Position>(pdoc->LineStart(pcs->DocFromDisplay(topLine)));
+ posTopLine = pdoc->LineStart(pcs->DocFromDisplay(topLine));
}
/**
@@ -498,7 +498,7 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) {
rcMarkers.right = rcMarkers.left + vs.fixedColumnWidth;
}
if (line != -1) {
- PRectangle rcLine = RectangleFromRange(Range(static_cast<Sci::Position>(pdoc->LineStart(line))), 0);
+ PRectangle rcLine = RectangleFromRange(Range(pdoc->LineStart(line)), 0);
// Inflate line rectangle if there are image markers with height larger than line height
if (vs.largestMarkerHeight > vs.lineHeight) {
@@ -528,9 +528,9 @@ void Editor::RedrawSelMargin(Sci::Line line, bool allAfter) {
PRectangle Editor::RectangleFromRange(Range r, int overlap) {
const Sci::Line minLine = pcs->DisplayFromDoc(
- static_cast<Sci::Line>(pdoc->LineFromPosition(r.First())));
+ pdoc->SciLineFromPosition(r.First()));
const Sci::Line maxLine = pcs->DisplayLastFromDoc(
- static_cast<Sci::Line>(pdoc->LineFromPosition(r.Last())));
+ pdoc->SciLineFromPosition(r.Last()));
const PRectangle rcClientDrawing = GetClientDrawingRectangle();
PRectangle rc;
const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0;
@@ -572,10 +572,10 @@ void Editor::SetRectangularRange() {
if (sel.selType == Selection::selThin) {
xCaret = xAnchor;
}
- const Sci::Line lineAnchorRect = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.Rectangular().anchor.Position()));
- const Sci::Line lineCaret = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.Rectangular().caret.Position()));
+ const Sci::Line lineAnchorRect =
+ pdoc->SciLineFromPosition(sel.Rectangular().anchor.Position());
+ const Sci::Line lineCaret =
+ pdoc->SciLineFromPosition(sel.Rectangular().caret.Position());
const int increment = (lineCaret > lineAnchorRect) ? 1 : -1;
for (Sci::Line line=lineAnchorRect; line != lineCaret+increment; line += increment) {
SelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor));
@@ -629,15 +629,15 @@ void Editor::InvalidateWholeSelection() {
at the beginning and end of the region lines. */
SelectionRange Editor::LineSelectionRange(SelectionPosition currentPos_, SelectionPosition anchor_) const {
if (currentPos_ > anchor_) {
- anchor_ = SelectionPosition(static_cast<Sci::Position>(
- pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position()))));
- currentPos_ = SelectionPosition(static_cast<Sci::Position>(
- pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position()))));
+ anchor_ = SelectionPosition(
+ pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position())));
+ currentPos_ = SelectionPosition(
+ pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position())));
} else {
- currentPos_ = SelectionPosition(static_cast<Sci::Position>(
- pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position()))));
- anchor_ = SelectionPosition(static_cast<Sci::Position>(
- pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position()))));
+ currentPos_ = SelectionPosition(
+ pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position())));
+ anchor_ = SelectionPosition(
+ pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position())));
}
return SelectionRange(currentPos_, anchor_);
}
@@ -645,7 +645,7 @@ SelectionRange Editor::LineSelectionRange(SelectionPosition currentPos_, Selecti
void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_) {
currentPos_ = ClampPositionIntoDocument(currentPos_);
anchor_ = ClampPositionIntoDocument(anchor_);
- const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position()));
+ const Sci::Line currentLine = pdoc->SciLineFromPosition(currentPos_.Position());
SelectionRange rangeNew(currentPos_, anchor_);
if (sel.selType == Selection::selLines) {
rangeNew = LineSelectionRange(currentPos_, anchor_);
@@ -671,7 +671,7 @@ void Editor::SetSelection(Sci::Position currentPos_, Sci::Position anchor_) {
// Just move the caret on the main selection
void Editor::SetSelection(SelectionPosition currentPos_) {
currentPos_ = ClampPositionIntoDocument(currentPos_);
- const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position()));
+ const Sci::Line currentLine = pdoc->SciLineFromPosition(currentPos_.Position());
if (sel.Count() > 1 || !(sel.RangeMain().caret == currentPos_)) {
InvalidateSelection(SelectionRange(currentPos_));
}
@@ -699,8 +699,7 @@ void Editor::SetSelection(int currentPos_) {
}
void Editor::SetEmptySelection(SelectionPosition currentPos_) {
- const Sci::Line currentLine = static_cast<Sci::Line>(
- pdoc->LineFromPosition(currentPos_.Position()));
+ const Sci::Line currentLine = pdoc->SciLineFromPosition(currentPos_.Position());
SelectionRange rangeNew(ClampPositionIntoDocument(currentPos_));
if (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) {
InvalidateSelection(rangeNew);
@@ -756,9 +755,9 @@ void Editor::MultipleSelectAdd(AddNumber addNumber) {
Sci::Position searchStart = it->start;
const Sci::Position searchEnd = it->end;
for (;;) {
- Sci::Position lengthFound = static_cast<Sci::Position>(selectedText.length());
- const Sci::Position pos = static_cast<Sci::Position>(pdoc->FindText(searchStart, searchEnd,
- selectedText.c_str(), searchFlags, &lengthFound));
+ Sci::Position lengthFound = selectedText.length();
+ const Sci::Position pos = pdoc->FindText(searchStart, searchEnd,
+ selectedText.c_str(), searchFlags, &lengthFound);
if (pos >= 0) {
sel.AddSelection(SelectionRange(pos + lengthFound, pos));
ScrollRange(sel.RangeMain());
@@ -829,8 +828,7 @@ SelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, Sci::Po
}
void Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible) {
- const Sci::Line currentLine = static_cast<Sci::Line>(
- pdoc->LineFromPosition(newPos.Position()));
+ const Sci::Line currentLine = pdoc->SciLineFromPosition(newPos.Position());
if (ensureVisible) {
// In case in need of wrapping to ensure DisplayFromDoc works.
if (currentLine >= wrapPending.start) {
@@ -899,7 +897,7 @@ void Editor::MovePositionTo(Sci::Position newPos, Selection::selTypes selt, bool
SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveDir) {
pos = ClampPositionIntoDocument(pos);
pos = MovePositionOutsideChar(pos, moveDir);
- const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(pos.Position()));
+ const Sci::Line lineDoc = pdoc->SciLineFromPosition(pos.Position());
if (pcs->GetVisible(lineDoc)) {
return pos;
} else {
@@ -907,12 +905,12 @@ SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveD
if (moveDir > 0) {
// lineDisplay is already line before fold as lines in fold use display line of line after fold
lineDisplay = std::clamp(lineDisplay, static_cast<Sci::Line>(0), pcs->LinesDisplayed());
- return SelectionPosition(static_cast<Sci::Position>(
- pdoc->LineStart(pcs->DocFromDisplay(lineDisplay))));
+ return SelectionPosition(
+ pdoc->LineStart(pcs->DocFromDisplay(lineDisplay)));
} else {
lineDisplay = std::clamp(lineDisplay - 1, static_cast<Sci::Line>(0), pcs->LinesDisplayed());
- return SelectionPosition(static_cast<Sci::Position>(
- pdoc->LineEnd(pcs->DocFromDisplay(lineDisplay))));
+ return SelectionPosition(
+ pdoc->LineEnd(pcs->DocFromDisplay(lineDisplay)));
}
}
}
@@ -982,8 +980,8 @@ void Editor::HorizontalScrollTo(int xPos) {
}
void Editor::VerticalCentreCaret() {
- const Sci::Line lineDoc = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret()));
+ const Sci::Line lineDoc =
+ pdoc->SciLineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret());
const Sci::Line lineDisplay = pcs->DisplayFromDoc(lineDoc);
const Sci::Line newTop = lineDisplay - (LinesOnScreen() / 2);
if (topLine != newTop) {
@@ -992,30 +990,24 @@ void Editor::VerticalCentreCaret() {
}
}
-// Avoid 64 bit compiler warnings.
-// Scintilla does not support text buffers larger than 2**31
-static int istrlen(const char *s) {
- return static_cast<int>(s ? strlen(s) : 0);
-}
-
void Editor::MoveSelectedLines(int lineDelta) {
// if selection doesn't start at the beginning of the line, set the new start
Sci::Position selectionStart = SelectionStart().Position();
- const Sci::Line startLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionStart));
- const Sci::Position beginningOfStartLine = static_cast<Sci::Position>(pdoc->LineStart(startLine));
+ const Sci::Line startLine = pdoc->SciLineFromPosition(selectionStart);
+ const Sci::Position beginningOfStartLine = pdoc->LineStart(startLine);
selectionStart = beginningOfStartLine;
// if selection doesn't end at the beginning of a line greater than that of the start,
// then set it at the beginning of the next one
Sci::Position selectionEnd = SelectionEnd().Position();
- const Sci::Line endLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionEnd));
- const Sci::Position beginningOfEndLine = static_cast<Sci::Position>(pdoc->LineStart(endLine));
+ const Sci::Line endLine = pdoc->SciLineFromPosition(selectionEnd);
+ const Sci::Position beginningOfEndLine = pdoc->LineStart(endLine);
bool appendEol = false;
if (selectionEnd > beginningOfEndLine
|| selectionStart == selectionEnd) {
- selectionEnd = static_cast<Sci::Position>(pdoc->LineStart(endLine + 1));
- appendEol = (selectionEnd == pdoc->Length() && pdoc->LineFromPosition(selectionEnd) == endLine);
+ selectionEnd = pdoc->LineStart(endLine + 1);
+ appendEol = (selectionEnd == pdoc->Length() && pdoc->SciLineFromPosition(selectionEnd) == endLine);
}
// if there's nowhere for the selection to move
@@ -1049,12 +1041,12 @@ void Editor::MoveSelectedLines(int lineDelta) {
const char *eol = StringFromEOLMode(pdoc->eolMode);
if (currentLine + lineDelta >= pdoc->LinesTotal())
- pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), eol, istrlen(eol));
+ pdoc->InsertString(pdoc->Length(), eol, strlen(eol));
GoToLine(currentLine + lineDelta);
selectionLength = pdoc->InsertString(CurrentPosition(), selectedText.Data(), selectionLength);
if (appendEol) {
- const Sci::Position lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, istrlen(eol));
+ const Sci::Position lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, strlen(eol));
selectionLength += lengthInserted;
}
SetSelection(CurrentPosition(), CurrentPosition() + selectionLength);
@@ -1077,7 +1069,7 @@ void Editor::MoveCaretInsideView(bool ensureVisible) {
false, false, UserVirtualSpace()),
Selection::noSel, ensureVisible);
} else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) {
- const Sci::Position yOfLastLineFullyDisplayed = static_cast<Sci::Position>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight;
+ const ptrdiff_t yOfLastLineFullyDisplayed = static_cast<ptrdiff_t>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight;
MovePositionTo(SPositionFromLocation(
Point::FromInts(lastXChosen - xOffset, static_cast<int>(rcClient.top + yOfLastLineFullyDisplayed)),
false, false, UserVirtualSpace()),
@@ -1514,7 +1506,7 @@ bool Editor::WrapLines(WrapScope ws) {
Sci::Line lineToWrap = wrapPending.start;
Sci::Line lineToWrapEnd = std::min(wrapPending.end, pdoc->LinesTotal());
const Sci::Line lineDocTop = pcs->DocFromDisplay(topLine);
- const int subLineTop = static_cast<int>(topLine - pcs->DisplayFromDoc(lineDocTop));
+ const Sci::Line subLineTop = topLine - pcs->DisplayFromDoc(lineDocTop);
if (ws == WrapScope::wsVisible) {
lineToWrap = std::clamp(lineDocTop-5, wrapPending.start, pdoc->LinesTotal());
// Priority wrap to just after visible area.
@@ -1539,7 +1531,7 @@ bool Editor::WrapLines(WrapScope ws) {
lineToWrapEnd = std::min(lineToWrapEnd, lineEndNeedWrap);
// Ensure all lines being wrapped are styled.
- pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->LineStart(lineToWrapEnd)));
+ pdoc->EnsureStyledTo(pdoc->LineStart(lineToWrapEnd));
if (lineToWrap < lineToWrapEnd) {
@@ -1560,7 +1552,8 @@ bool Editor::WrapLines(WrapScope ws) {
lineToWrap++;
}
- goodTopLine = pcs->DisplayFromDoc(lineDocTop) + std::min(subLineTop, pcs->GetHeight(lineDocTop)-1);
+ goodTopLine = pcs->DisplayFromDoc(lineDocTop) + std::min(
+ subLineTop, static_cast<Sci::Line>(pcs->GetHeight(lineDocTop)-1));
}
}
@@ -1615,27 +1608,26 @@ void Editor::LinesSplit(int pixelWidth) {
const PRectangle rcText = GetTextRectangle();
pixelWidth = static_cast<int>(rcText.Width());
}
- const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(targetStart));
- Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd));
+ const Sci::Line lineStart = pdoc->SciLineFromPosition(targetStart);
+ Sci::Line lineEnd = pdoc->SciLineFromPosition(targetEnd);
const char *eol = StringFromEOLMode(pdoc->eolMode);
UndoGroup ug(pdoc);
for (Sci::Line line = lineStart; line <= lineEnd; line++) {
AutoSurface surface(this);
AutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this));
if (surface && ll) {
- const Sci::Position posLineStart = static_cast<Sci::Position>(pdoc->LineStart(line));
+ const Sci::Position posLineStart = pdoc->LineStart(line);
view.LayoutLine(*this, line, surface, vs, ll, pixelWidth);
Sci::Position lengthInsertedTotal = 0;
for (int subLine = 1; subLine < ll->lines; subLine++) {
const Sci::Position lengthInserted = pdoc->InsertString(
- static_cast<int>(posLineStart + lengthInsertedTotal +
- ll->LineStart(subLine)),
- eol, istrlen(eol));
+ posLineStart + lengthInsertedTotal + ll->LineStart(subLine),
+ eol, strlen(eol));
targetEnd += lengthInserted;
lengthInsertedTotal += lengthInserted;
}
}
- lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd));
+ lineEnd = pdoc->SciLineFromPosition(targetEnd);
}
}
}
@@ -1803,7 +1795,7 @@ int Editor::TextWidth(int style, const char *text) {
RefreshStyleData();
AutoSurface surface(this);
if (surface) {
- return static_cast<int>(surface->WidthText(vs.styles[style].font, text, istrlen(text)));
+ return static_cast<int>(surface->WidthText(vs.styles[style].font, text, static_cast<int>(strlen(text))));
} else {
return 1;
}
@@ -1852,7 +1844,7 @@ void Editor::ChangeSize() {
Sci::Position Editor::RealizeVirtualSpace(Sci::Position position, Sci::Position virtualSpace) {
if (virtualSpace > 0) {
- const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(position));
+ const Sci::Line line = pdoc->SciLineFromPosition(position);
const Sci::Position indent = pdoc->GetLineIndentPosition(line);
if (indent == position) {
return pdoc->SetLineIndentation(line, pdoc->GetLineIndentation(line) + virtualSpace);
@@ -1933,7 +1925,7 @@ void Editor::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) {
if (Wrapping()) {
AutoSurface surface(this);
if (surface) {
- if (WrapOneLine(surface, static_cast<Sci::Line>(pdoc->LineFromPosition(positionInsert)))) {
+ if (WrapOneLine(surface, pdoc->SciLineFromPosition(positionInsert))) {
SetScrollBars();
SetVerticalScrollPos();
Redraw();
@@ -2002,7 +1994,7 @@ void Editor::ClearBeforeTentativeStart() {
}
}
-void Editor::InsertPaste(const char *text, int len) {
+void Editor::InsertPaste(const char *text, Sci::Position len) {
if (multiPasteMode == SC_MULTIPASTE_ONCE) {
SelectionPosition selStart = sel.Start();
selStart = RealizeVirtualSpace(selStart);
@@ -2037,25 +2029,25 @@ void Editor::InsertPaste(const char *text, int len) {
}
}
-void Editor::InsertPasteShape(const char *text, int len, PasteShape shape) {
+void Editor::InsertPasteShape(const char *text, Sci::Position len, PasteShape shape) {
std::string convertedText;
if (convertPastes) {
// Convert line endings of the paste into our local line-endings mode
convertedText = Document::TransformLineEnds(text, len, pdoc->eolMode);
- len = static_cast<int>(convertedText.length());
+ len = convertedText.length();
text = convertedText.c_str();
}
if (shape == pasteRectangular) {
PasteRectangular(sel.Start(), text, len);
} else {
if (shape == pasteLine) {
- const Sci::Position insertPos = static_cast<Sci::Position>(
- pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret())));
+ const Sci::Position insertPos =
+ pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret()));
Sci::Position lengthInserted = pdoc->InsertString(insertPos, text, len);
// add the newline if necessary
if ((len > 0) && (text[len - 1] != '\n' && text[len - 1] != '\r')) {
const char *endline = StringFromEOLMode(pdoc->eolMode);
- const int length = static_cast<int>(strlen(endline));
+ const Sci::Position length = strlen(endline);
lengthInserted += pdoc->InsertString(insertPos + lengthInserted, endline, length);
}
if (sel.MainCaret() == insertPos) {
@@ -2091,7 +2083,7 @@ void Editor::ClearAll() {
{
UndoGroup ug(pdoc);
if (0 != pdoc->Length()) {
- pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length()));
+ pdoc->DeleteChars(0, pdoc->Length());
}
if (!pdoc->IsReadOnly()) {
pcs->Clear();
@@ -2137,7 +2129,7 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Posit
}
sel.Clear();
sel.RangeMain() = SelectionRange(pos);
- Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ Sci::Line line = pdoc->SciLineFromPosition(sel.MainCaret());
UndoGroup ug(pdoc);
sel.RangeMain().caret = RealizeVirtualSpace(sel.RangeMain().caret);
const int xInsert = XFromPosition(sel.RangeMain().caret);
@@ -2150,9 +2142,9 @@ void Editor::PasteRectangular(SelectionPosition pos, const char *ptr, Sci::Posit
line++;
if (line >= pdoc->LinesTotal()) {
if (pdoc->eolMode != SC_EOL_LF)
- pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\r", 1);
+ pdoc->InsertString(pdoc->Length(), "\r", 1);
if (pdoc->eolMode != SC_EOL_CR)
- pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\n", 1);
+ pdoc->InsertString(pdoc->Length(), "\n", 1);
}
// Pad the end of lines with spaces if required
sel.RangeMain().caret.SetPosition(PositionFromLineX(line, xInsert));
@@ -2212,7 +2204,7 @@ void Editor::Clear() {
void Editor::SelectAll() {
sel.Clear();
- SetSelection(0, static_cast<Sci::Position>(pdoc->Length()));
+ SetSelection(0, pdoc->Length());
Redraw();
}
@@ -2249,8 +2241,8 @@ void Editor::DelCharBack(bool allowLineStartDeletion) {
sel.Range(r).caret.SetVirtualSpace(sel.Range(r).caret.VirtualSpace() - 1);
sel.Range(r).anchor.SetVirtualSpace(sel.Range(r).caret.VirtualSpace());
} else {
- const Sci::Line lineCurrentPos = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.Range(r).caret.Position()));
+ const Sci::Line lineCurrentPos =
+ pdoc->SciLineFromPosition(sel.Range(r).caret.Position());
if (allowLineStartDeletion || (pdoc->LineStart(lineCurrentPos) != sel.Range(r).caret.Position())) {
if (pdoc->GetColumn(sel.Range(r).caret.Position()) <= pdoc->GetLineIndentation(lineCurrentPos) &&
pdoc->GetColumn(sel.Range(r).caret.Position()) > 0 && pdoc->backspaceUnindents) {
@@ -2408,11 +2400,11 @@ void Editor::NotifyIndicatorClick(bool click, Sci::Position position, int modifi
bool Editor::NotifyMarginClick(Point pt, int modifiers) {
const int marginClicked = vs.MarginFromLocation(pt);
if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) {
- const Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt)));
+ const Sci::Position position = pdoc->LineStart(LineFromLocation(pt));
if ((vs.ms[marginClicked].mask & SC_MASK_FOLDERS) && (foldAutomatic & SC_AUTOMATICFOLD_CLICK)) {
const bool ctrl = (modifiers & SCI_CTRL) != 0;
const bool shift = (modifiers & SCI_SHIFT) != 0;
- const Sci::Line lineClick = static_cast<Sci::Line>(pdoc->LineFromPosition(position));
+ const Sci::Line lineClick = pdoc->SciLineFromPosition(position);
if (shift && ctrl) {
FoldAll(SC_FOLDACTION_TOGGLE);
} else {
@@ -2446,7 +2438,7 @@ bool Editor::NotifyMarginClick(Point pt, int modifiers) {
bool Editor::NotifyMarginRightClick(Point pt, int modifiers) {
const int marginRightClicked = vs.MarginFromLocation(pt);
if ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) {
- const Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt)));
+ const Sci::Position position = pdoc->LineStart(LineFromLocation(pt));
SCNotification scn = {};
scn.nmhdr.code = SCN_MARGINRIGHTCLICK;
scn.modifiers = modifiers;
@@ -2496,7 +2488,7 @@ void Editor::NotifySavePoint(Document *, void *, bool atSavePoint) {
void Editor::CheckModificationForWrap(DocModification mh) {
if (mh.modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT)) {
view.llc.Invalidate(LineLayout::llCheckTextAndStyle);
- const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
+ const Sci::Line lineDoc = pdoc->SciLineFromPosition(mh.position);
const Sci::Line lines = std::max(static_cast<Sci::Line>(0), mh.linesAdded);
if (Wrapping()) {
NeedWrapping(lineDoc, lineDoc + lines + 1);
@@ -2538,8 +2530,8 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
if (mh.modificationType & SC_MOD_CHANGELINESTATE) {
if (paintState == painting) {
CheckForChangeOutsidePaint(
- Range(static_cast<Sci::Position>(pdoc->LineStart(mh.line)),
- static_cast<Sci::Position>(pdoc->LineStart(mh.line + 1))));
+ Range(pdoc->LineStart(mh.line),
+ pdoc->LineStart(mh.line + 1)));
} else {
// Could check that change is before last visible line.
Redraw();
@@ -2585,20 +2577,20 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
}
if ((mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) && pcs->HiddenLines()) {
// Some lines are hidden so may need shown.
- const Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
+ const Sci::Line lineOfPos = pdoc->SciLineFromPosition(mh.position);
Sci::Position endNeedShown = mh.position;
if (mh.modificationType & SC_MOD_BEFOREINSERT) {
if (pdoc->ContainsLineEnd(mh.text, mh.length) && (mh.position != pdoc->LineStart(lineOfPos)))
- endNeedShown = static_cast<Sci::Position>(pdoc->LineStart(lineOfPos+1));
+ endNeedShown = pdoc->LineStart(lineOfPos+1);
} else if (mh.modificationType & SC_MOD_BEFOREDELETE) {
// If the deletion includes any EOL then we extend the need shown area.
endNeedShown = mh.position + mh.length;
- Sci::Line lineLast = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position+mh.length));
+ Sci::Line lineLast = pdoc->SciLineFromPosition(mh.position+mh.length);
for (Sci::Line line = lineOfPos + 1; line <= lineLast; line++) {
const Sci::Line lineMaxSubord = pdoc->GetLastChild(line, -1, -1);
if (lineLast < lineMaxSubord) {
lineLast = lineMaxSubord;
- endNeedShown = static_cast<Sci::Position>(pdoc->LineEnd(lineLast));
+ endNeedShown = pdoc->LineEnd(lineLast);
}
}
}
@@ -2607,7 +2599,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
if (mh.linesAdded != 0) {
// Update contraction state for inserted and removed lines
// lineOfPos should be calculated in context of state before modification, shouldn't it
- Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
+ Sci::Line lineOfPos = pdoc->SciLineFromPosition(mh.position);
if (mh.position > pdoc->LineStart(lineOfPos))
lineOfPos++; // Affecting subsequent lines
if (mh.linesAdded > 0) {
@@ -2618,7 +2610,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
view.LinesAddedOrRemoved(lineOfPos, mh.linesAdded);
}
if (mh.modificationType & SC_MOD_CHANGEANNOTATION) {
- const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
+ const Sci::Line lineDoc = pdoc->SciLineFromPosition(mh.position);
if (vs.annotationVisible) {
if (pcs->SetHeight(lineDoc, static_cast<int>(pcs->GetHeight(lineDoc) + mh.annotationLinesAdded))) {
SetScrollBars();
@@ -2638,7 +2630,7 @@ void Editor::NotifyModified(Document *, DocModification mh, void *) {
}
if (paintState == notPainting && !CanDeferToLastStep(mh)) {
- QueueIdleWork(WorkNeeded::workStyle, static_cast<Sci::Position>(pdoc->Length()));
+ QueueIdleWork(WorkNeeded::workStyle, pdoc->Length());
Redraw();
}
} else {
@@ -2846,12 +2838,12 @@ void Editor::PageMove(int direction, Selection::selTypes selt, bool stuttered) {
Sci::Line topLineNew;
SelectionPosition newPos;
- const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ const Sci::Line currentLine = pdoc->SciLineFromPosition(sel.MainCaret());
const Sci::Line topStutterLine = topLine + caretYSlop;
- const Sci::Line bottomStutterLine = static_cast<Sci::Line>(
- pdoc->LineFromPosition(PositionFromLocation(
+ const Sci::Line bottomStutterLine =
+ pdoc->SciLineFromPosition(PositionFromLocation(
Point::FromInts(lastXChosen - xOffset, direction * vs.lineHeight * static_cast<int>(LinesToScroll()))))
- - caretYSlop - 1);
+ - caretYSlop - 1;
if (stuttered && (direction < 0 && currentLine > topStutterLine)) {
topLineNew = topLine;
@@ -2908,15 +2900,15 @@ void Editor::ChangeCaseOfSelection(int caseMapping) {
}
const size_t endDifferenceText = sText.size() - 1 - lastDifferenceText;
pdoc->DeleteChars(
- static_cast<Sci::Position>(currentNoVS.Start().Position() + firstDifference),
- static_cast<Sci::Position>(rangeBytes - firstDifference - endDifferenceText));
- const Sci::Position lengthChange = static_cast<Sci::Position>(lastDifferenceMapped - firstDifference + 1);
+ currentNoVS.Start().Position() + firstDifference,
+ rangeBytes - firstDifference - endDifferenceText);
+ const Sci::Position lengthChange = lastDifferenceMapped - firstDifference + 1;
const Sci::Position lengthInserted = pdoc->InsertString(
- static_cast<int>(currentNoVS.Start().Position() + firstDifference),
+ currentNoVS.Start().Position() + firstDifference,
sMapped.c_str() + firstDifference,
lengthChange);
// Automatic movement changes selection so reset to exactly the same as it was.
- const Sci::Position diffSizes = static_cast<Sci::Position>(sMapped.size() - sText.size()) + lengthInserted - lengthChange;
+ const Sci::Position diffSizes = sMapped.size() - sText.size() + lengthInserted - lengthChange;
if (diffSizes != 0) {
if (current.anchor > current.caret)
current.anchor.Add(diffSizes);
@@ -2930,36 +2922,34 @@ void Editor::ChangeCaseOfSelection(int caseMapping) {
}
void Editor::LineTranspose() {
- const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ const Sci::Line line = pdoc->SciLineFromPosition(sel.MainCaret());
if (line > 0) {
UndoGroup ug(pdoc);
- const Sci::Position startPrevious = static_cast<Sci::Position>(pdoc->LineStart(line - 1));
- const std::string linePrevious = RangeText(startPrevious,
- static_cast<Sci::Position>(pdoc->LineEnd(line - 1)));
+ const Sci::Position startPrevious = pdoc->LineStart(line - 1);
+ const std::string linePrevious = RangeText(startPrevious, pdoc->LineEnd(line - 1));
- Sci::Position startCurrent = static_cast<Sci::Position>(pdoc->LineStart(line));
- const std::string lineCurrent = RangeText(startCurrent,
- static_cast<Sci::Position>(pdoc->LineEnd(line)));
+ Sci::Position startCurrent = pdoc->LineStart(line);
+ const std::string lineCurrent = RangeText(startCurrent, pdoc->LineEnd(line));
- pdoc->DeleteChars(startCurrent, static_cast<Sci::Position>(lineCurrent.length()));
- pdoc->DeleteChars(startPrevious, static_cast<Sci::Position>(linePrevious.length()));
- startCurrent -= static_cast<Sci::Position>(linePrevious.length());
+ pdoc->DeleteChars(startCurrent, lineCurrent.length());
+ pdoc->DeleteChars(startPrevious, linePrevious.length());
+ startCurrent -= linePrevious.length();
startCurrent += pdoc->InsertString(startPrevious, lineCurrent.c_str(),
- static_cast<Sci::Position>(lineCurrent.length()));
+ lineCurrent.length());
pdoc->InsertString(startCurrent, linePrevious.c_str(),
- static_cast<Sci::Position>(linePrevious.length()));
+ linePrevious.length());
// Move caret to start of current line
MovePositionTo(SelectionPosition(startCurrent));
}
}
void Editor::LineReverse() {
- const Sci::Line lineStart = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.RangeMain().Start().Position()));
- const Sci::Line lineEnd = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.RangeMain().End().Position()-1));
+ const Sci::Line lineStart =
+ pdoc->SciLineFromPosition(sel.RangeMain().Start().Position());
+ const Sci::Line lineEnd =
+ pdoc->SciLineFromPosition(sel.RangeMain().End().Position()-1);
const Sci::Line lineDiff = lineEnd - lineStart;
if (lineDiff <= 0)
return;
@@ -2967,12 +2957,12 @@ void Editor::LineReverse() {
for (Sci::Line i=(lineDiff+1)/2-1; i>=0; --i) {
const Sci::Line lineNum2 = lineEnd - i;
const Sci::Line lineNum1 = lineStart + i;
- Sci::Position lineStart2 = static_cast<Sci::Position>(pdoc->LineStart(lineNum2));
- const Sci::Position lineStart1 = static_cast<Sci::Position>(pdoc->LineStart(lineNum1));
- const std::string line2 = RangeText(lineStart2, static_cast<Sci::Position>(pdoc->LineEnd(lineNum2)));
- const std::string line1 = RangeText(lineStart1, static_cast<Sci::Position>(pdoc->LineEnd(lineNum1)));
- const Sci::Position lineLen2 = static_cast<Sci::Position>(line2.length());
- const Sci::Position lineLen1 = static_cast<Sci::Position>(line1.length());
+ Sci::Position lineStart2 = pdoc->LineStart(lineNum2);
+ const Sci::Position lineStart1 = pdoc->LineStart(lineNum1);
+ const std::string line2 = RangeText(lineStart2, pdoc->LineEnd(lineNum2));
+ const std::string line1 = RangeText(lineStart1, pdoc->LineEnd(lineNum1));
+ const Sci::Position lineLen2 = line2.length();
+ const Sci::Position lineLen1 = line1.length();
pdoc->DeleteChars(lineStart2, lineLen2);
pdoc->DeleteChars(lineStart1, lineLen1);
lineStart2 -= lineLen1;
@@ -2980,8 +2970,8 @@ void Editor::LineReverse() {
pdoc->InsertString(lineStart1, line2.c_str(), lineLen2);
}
// Wholly select all affected lines
- sel.RangeMain() = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineStart)),
- static_cast<Sci::Position>(pdoc->LineStart(lineEnd+1)));
+ sel.RangeMain() = SelectionRange(pdoc->LineStart(lineStart),
+ pdoc->LineStart(lineEnd+1));
}
void Editor::Duplicate(bool forLine) {
@@ -2990,31 +2980,31 @@ void Editor::Duplicate(bool forLine) {
}
UndoGroup ug(pdoc);
const char *eol = "";
- int eolLen = 0;
+ Sci::Position eolLen = 0;
if (forLine) {
eol = StringFromEOLMode(pdoc->eolMode);
- eolLen = istrlen(eol);
+ eolLen = strlen(eol);
}
for (size_t r=0; r<sel.Count(); r++) {
SelectionPosition start = sel.Range(r).Start();
SelectionPosition end = sel.Range(r).End();
if (forLine) {
- const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.Range(r).caret.Position()));
- start = SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(line)));
- end = SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(line)));
+ const Sci::Line line = pdoc->SciLineFromPosition(sel.Range(r).caret.Position());
+ start = SelectionPosition(pdoc->LineStart(line));
+ end = SelectionPosition(pdoc->LineEnd(line));
}
std::string text = RangeText(start.Position(), end.Position());
Sci::Position lengthInserted = eolLen;
if (forLine)
lengthInserted = pdoc->InsertString(end.Position(), eol, eolLen);
- pdoc->InsertString(end.Position() + lengthInserted, text.c_str(), static_cast<Sci::Position>(text.length()));
+ pdoc->InsertString(end.Position() + lengthInserted, text.c_str(), text.length());
}
if (sel.Count() && sel.IsRectangular()) {
SelectionPosition last = sel.Last();
if (forLine) {
- const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(last.Position()));
+ const Sci::Line line = pdoc->SciLineFromPosition(last.Position());
last = SelectionPosition(last.Position() +
- static_cast<Sci::Position>(pdoc->LineStart(line+1) - pdoc->LineStart(line)));
+ pdoc->LineStart(line+1) - pdoc->LineStart(line));
}
if (sel.Rectangular().anchor > sel.Rectangular().caret)
sel.Rectangular().anchor = last;
@@ -3048,7 +3038,7 @@ void Editor::NewLine() {
sel.Range(r).ClearVirtualSpace();
const char *eol = StringFromEOLMode(pdoc->eolMode);
const Sci::Position positionInsert = sel.Range(r).caret.Position();
- const Sci::Position insertLength = pdoc->InsertString(positionInsert, eol, istrlen(eol));
+ const Sci::Position insertLength = pdoc->InsertString(positionInsert, eol, strlen(eol));
if (insertLength > 0) {
sel.Range(r) = SelectionRange(positionInsert + insertLength);
countInsertions++;
@@ -3083,8 +3073,8 @@ SelectionPosition Editor::PositionUpOrDown(SelectionPosition spStart, int direct
int skipLines = 0;
if (vs.annotationVisible) {
- const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(spStart.Position()));
- const Point ptStartLine = LocationFromPosition(static_cast<Sci::Position>(pdoc->LineStart(lineDoc)));
+ const Sci::Line lineDoc = pdoc->SciLineFromPosition(spStart.Position());
+ const Point ptStartLine = LocationFromPosition(pdoc->LineStart(lineDoc));
const int subLine = static_cast<int>(pt.y - ptStartLine.y) / vs.lineHeight;
if (direction < 0 && subLine == 0) {
@@ -3179,7 +3169,7 @@ void Editor::ParaUpOrDown(int direction, Selection::selTypes selt) {
const Sci::Position savedPos = sel.MainCaret();
do {
MovePositionTo(SelectionPosition(direction > 0 ? pdoc->ParaDown(sel.MainCaret()) : pdoc->ParaUp(sel.MainCaret())), selt);
- lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
+ lineDoc = pdoc->SciLineFromPosition(sel.MainCaret());
if (direction > 0) {
if (sel.MainCaret() >= pdoc->Length() && !pcs->GetVisible(lineDoc)) {
if (selt == Selection::noSel) {
@@ -3375,7 +3365,7 @@ int Editor::HorizontalMove(unsigned int iMessage) {
case SCI_HOMERECTEXTEND:
case SCI_HOMEEXTEND: // only when sel.IsRectangular() && sel.MoveExtends()
spCaret = SelectionPosition(
- static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
+ pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
break;
case SCI_VCHOMERECTEXTEND:
case SCI_VCHOMEEXTEND: // only when sel.IsRectangular() && sel.MoveExtends()
@@ -3397,7 +3387,7 @@ int Editor::HorizontalMove(unsigned int iMessage) {
switch (iMessage) {
case SCI_HOME:
selAtLimit = SelectionPosition(
- static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(selAtLimit.Position()))));
+ pdoc->LineStart(pdoc->LineFromPosition(selAtLimit.Position())));
break;
case SCI_VCHOME:
selAtLimit = SelectionPosition(pdoc->VCHomePosition(selAtLimit.Position()));
@@ -3460,7 +3450,7 @@ int Editor::HorizontalMove(unsigned int iMessage) {
case SCI_HOME:
case SCI_HOMEEXTEND:
spCaret = SelectionPosition(
- static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
+ pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
break;
case SCI_HOMEDISPLAY:
case SCI_HOMEDISPLAYEXTEND:
@@ -3471,7 +3461,7 @@ int Editor::HorizontalMove(unsigned int iMessage) {
spCaret = MovePositionSoVisible(StartEndDisplayLine(spCaret.Position(), true), -1);
if (spCaretNow <= spCaret)
spCaret = SelectionPosition(
- static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
+ pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
break;
case SCI_VCHOME:
case SCI_VCHOMEEXTEND:
@@ -3621,13 +3611,13 @@ int Editor::DelWordOrLine(unsigned int iMessage) {
break;
case SCI_DELLINELEFT:
rangeDelete = Range(
- static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position()))),
+ pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position())),
sel.Range(r).caret.Position());
break;
case SCI_DELLINERIGHT:
rangeDelete = Range(
sel.Range(r).caret.Position(),
- static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position()))));
+ pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position())));
break;
}
if (!RangeContainsProtected(rangeDelete.start, rangeDelete.end)) {
@@ -3738,11 +3728,11 @@ int Editor::KeyCommand(unsigned int iMessage) {
SetLastXChosen();
break;
case SCI_DOCUMENTEND:
- MovePositionTo(static_cast<Sci::Position>(pdoc->Length()));
+ MovePositionTo(pdoc->Length());
SetLastXChosen();
break;
case SCI_DOCUMENTENDEXTEND:
- MovePositionTo(static_cast<Sci::Position>(pdoc->Length()), Selection::selStream);
+ MovePositionTo(pdoc->Length(), Selection::selStream);
SetLastXChosen();
break;
case SCI_STUTTEREDPAGEUP:
@@ -3848,26 +3838,26 @@ int Editor::KeyCommand(unsigned int iMessage) {
return DelWordOrLine(iMessage);
case SCI_LINECOPY: {
- const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionStart().Position()));
- const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionEnd().Position()));
- CopyRangeToClipboard(static_cast<Sci::Position>(pdoc->LineStart(lineStart)),
- static_cast<Sci::Position>(pdoc->LineStart(lineEnd + 1)));
+ const Sci::Line lineStart = pdoc->SciLineFromPosition(SelectionStart().Position());
+ const Sci::Line lineEnd = pdoc->SciLineFromPosition(SelectionEnd().Position());
+ CopyRangeToClipboard(pdoc->LineStart(lineStart),
+ pdoc->LineStart(lineEnd + 1));
}
break;
case SCI_LINECUT: {
- const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionStart().Position()));
- const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(SelectionEnd().Position()));
- const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(lineStart));
- const Sci::Position end = static_cast<Sci::Position>(pdoc->LineStart(lineEnd + 1));
+ const Sci::Line lineStart = pdoc->SciLineFromPosition(SelectionStart().Position());
+ const Sci::Line lineEnd = pdoc->SciLineFromPosition(SelectionEnd().Position());
+ const Sci::Position start = pdoc->LineStart(lineStart);
+ const Sci::Position end = pdoc->LineStart(lineEnd + 1);
SetSelection(start, end);
Cut();
SetLastXChosen();
}
break;
case SCI_LINEDELETE: {
- const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(line));
- const Sci::Position end = static_cast<Sci::Position>(pdoc->LineStart(line + 1));
+ const Sci::Line line = pdoc->SciLineFromPosition(sel.MainCaret());
+ const Sci::Position start = pdoc->LineStart(line);
+ const Sci::Position end = pdoc->LineStart(line + 1);
pdoc->DeleteChars(start, end - start);
}
break;
@@ -3920,10 +3910,10 @@ int Editor::KeyDownWithModifiers(int key, int modifiers, bool *consumed) {
void Editor::Indent(bool forwards) {
UndoGroup ug(pdoc);
for (size_t r=0; r<sel.Count(); r++) {
- const Sci::Line lineOfAnchor = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.Range(r).anchor.Position()));
+ const Sci::Line lineOfAnchor =
+ pdoc->SciLineFromPosition(sel.Range(r).anchor.Position());
Sci::Position caretPosition = sel.Range(r).caret.Position();
- const Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(caretPosition));
+ const Sci::Line lineCurrentPos = pdoc->SciLineFromPosition(caretPosition);
if (lineOfAnchor == lineCurrentPos) {
if (forwards) {
pdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length());
@@ -3946,7 +3936,7 @@ void Editor::Indent(bool forwards) {
numSpaces = pdoc->tabInChars;
const std::string spaceText(numSpaces, ' ');
const Sci::Position lengthInserted = pdoc->InsertString(caretPosition, spaceText.c_str(),
- static_cast<Sci::Position>(spaceText.length()));
+ spaceText.length());
sel.Range(r) = SelectionRange(caretPosition + lengthInserted);
}
}
@@ -3970,9 +3960,9 @@ void Editor::Indent(bool forwards) {
}
} else { // Multiline
const Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() -
- static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor));
+ pdoc->LineStart(lineOfAnchor);
const Sci::Position currentPosPosOnLine = caretPosition -
- static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos));
+ pdoc->LineStart(lineCurrentPos);
// Multiple lines selected so indent / dedent
const Sci::Line lineTopSel = std::min(lineOfAnchor, lineCurrentPos);
Sci::Line lineBottomSel = std::max(lineOfAnchor, lineCurrentPos);
@@ -3981,18 +3971,18 @@ void Editor::Indent(bool forwards) {
pdoc->Indent(forwards, lineBottomSel, lineTopSel);
if (lineOfAnchor < lineCurrentPos) {
if (currentPosPosOnLine == 0)
- sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
- static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
+ sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos),
+ pdoc->LineStart(lineOfAnchor));
else
- sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1)),
- static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
+ sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos + 1),
+ pdoc->LineStart(lineOfAnchor));
} else {
if (anchorPosOnLine == 0)
- sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
- static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
+ sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos),
+ pdoc->LineStart(lineOfAnchor));
else
- sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
- static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor + 1)));
+ sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos),
+ pdoc->LineStart(lineOfAnchor + 1));
}
}
}
@@ -4024,7 +4014,7 @@ Sci::Position Editor::FindText(
sptr_t lParam) { ///< @c Sci_TextToFind structure: The text to search for in the given range.
Sci_TextToFind *ft = reinterpret_cast<Sci_TextToFind *>(lParam);
- Sci::Position lengthFound = istrlen(ft->lpstrText);
+ Sci::Position lengthFound = strlen(ft->lpstrText);
if (!pdoc->HasCaseFolder())
pdoc->SetCaseFolder(CaseFolderForEncoding());
try {
@@ -4038,7 +4028,7 @@ Sci::Position Editor::FindText(
ft->chrgText.cpMin = static_cast<Sci_PositionCR>(pos);
ft->chrgText.cpMax = static_cast<Sci_PositionCR>(pos + lengthFound);
}
- return static_cast<int>(pos);
+ return pos;
} catch (RegexError &) {
errorStatus = SC_STATUS_WARN_REGEX;
return -1;
@@ -4073,12 +4063,12 @@ Sci::Position Editor::SearchText(
const char *txt = reinterpret_cast<char *>(lParam);
Sci::Position pos;
- Sci::Position lengthFound = istrlen(txt);
+ Sci::Position lengthFound = strlen(txt);
if (!pdoc->HasCaseFolder())
pdoc->SetCaseFolder(CaseFolderForEncoding());
try {
if (iMessage == SCI_SEARCHNEXT) {
- pos = pdoc->FindText(searchAnchor, static_cast<Sci::Position>(pdoc->Length()), txt,
+ pos = pdoc->FindText(searchAnchor, pdoc->Length(), txt,
static_cast<int>(wParam),
&lengthFound);
} else {
@@ -4143,7 +4133,7 @@ void Editor::GoToLine(Sci::Line lineNo) {
lineNo = pdoc->LinesTotal();
if (lineNo < 0)
lineNo = 0;
- SetEmptySelection(static_cast<Sci::Position>(pdoc->LineStart(lineNo)));
+ SetEmptySelection(pdoc->LineStart(lineNo));
ShowCaretAtCurrentPosition();
EnsureCaretVisible();
}
@@ -4171,9 +4161,9 @@ std::string Editor::RangeText(Sci::Position start, Sci::Position end) const {
void Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) {
if (sel.Empty()) {
if (allowLineCopy) {
- const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- const Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(currentLine));
- const Sci::Position end = static_cast<Sci::Position>(pdoc->LineEnd(currentLine));
+ const Sci::Line currentLine = pdoc->SciLineFromPosition(sel.MainCaret());
+ const Sci::Position start = pdoc->LineStart(currentLine);
+ const Sci::Position end = pdoc->LineEnd(currentLine);
std::string text = RangeText(start, end);
if (pdoc->eolMode != SC_EOL_LF)
@@ -4212,7 +4202,7 @@ void Editor::CopyRangeToClipboard(Sci::Position start, Sci::Position end) {
CopyToClipboard(selectedText);
}
-void Editor::CopyText(int length, const char *text) {
+void Editor::CopyText(size_t length, const char *text) {
SelectionText selectedText;
selectedText.Copy(std::string(text, length),
pdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false, false);
@@ -4298,14 +4288,14 @@ void Editor::DropAt(SelectionPosition position, const char *value, size_t length
std::string convertedText = Document::TransformLineEnds(value, lengthValue, pdoc->eolMode);
if (rectangular) {
- PasteRectangular(position, convertedText.c_str(), static_cast<Sci::Position>(convertedText.length()));
+ PasteRectangular(position, convertedText.c_str(), convertedText.length());
// Should try to select new rectangle but it may not be a rectangle now so just select the drop position
SetEmptySelection(position);
} else {
position = MovePositionOutsideChar(position, sel.MainCaret() - position.Position());
position = RealizeVirtualSpace(position);
const Sci::Position lengthInserted = pdoc->InsertString(
- position.Position(), convertedText.c_str(), static_cast<int>(convertedText.length()));
+ position.Position(), convertedText.c_str(), convertedText.length());
if (lengthInserted > 0) {
SelectionPosition posAfterInsertion = position;
posAfterInsertion.Add(lengthInserted);
@@ -4391,17 +4381,17 @@ void Editor::TrimAndSetSelection(Sci::Position currentPos_, Sci::Position anchor
void Editor::LineSelection(Sci::Position lineCurrentPos_, Sci::Position lineAnchorPos_, bool wholeLine) {
Sci::Position selCurrentPos, selAnchorPos;
if (wholeLine) {
- const Sci::Line lineCurrent_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineCurrentPos_));
- const Sci::Line lineAnchor_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineAnchorPos_));
+ const Sci::Line lineCurrent_ = pdoc->SciLineFromPosition(lineCurrentPos_);
+ const Sci::Line lineAnchor_ = pdoc->SciLineFromPosition(lineAnchorPos_);
if (lineAnchorPos_ < lineCurrentPos_) {
- selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_ + 1));
- selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_));
+ selCurrentPos = pdoc->LineStart(lineCurrent_ + 1);
+ selAnchorPos = pdoc->LineStart(lineAnchor_);
} else if (lineAnchorPos_ > lineCurrentPos_) {
- selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_));
- selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1));
+ selCurrentPos = pdoc->LineStart(lineCurrent_);
+ selAnchorPos = pdoc->LineStart(lineAnchor_ + 1);
} else { // Same line, select it
- selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1));
- selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_));
+ selCurrentPos = pdoc->LineStart(lineAnchor_ + 1);
+ selAnchorPos = pdoc->LineStart(lineAnchor_);
}
} else {
if (lineAnchorPos_ < lineCurrentPos_) {
@@ -4884,7 +4874,7 @@ void Editor::ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers
const SelectionPosition selEnd = SelectionEnd();
if (selStart < selEnd) {
if (drag.Length()) {
- const int length = static_cast<int>(drag.Length());
+ const Sci::Position length = drag.Length();
if (modifiers & SCI_CTRL) {
const Sci::Position lengthInserted = pdoc->InsertString(
newPos.Position(), drag.Data(), length);
@@ -4892,15 +4882,15 @@ void Editor::ButtonUpWithModifiers(Point pt, unsigned int curTime, int modifiers
SetSelection(newPos.Position(), newPos.Position() + lengthInserted);
}
} else if (newPos < selStart) {
- pdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length()));
+ pdoc->DeleteChars(selStart.Position(), drag.Length());
const Sci::Position lengthInserted = pdoc->InsertString(
newPos.Position(), drag.Data(), length);
if (lengthInserted > 0) {
SetSelection(newPos.Position(), newPos.Position() + lengthInserted);
}
} else if (newPos > selEnd) {
- pdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length()));
- newPos.Add(-static_cast<int>(drag.Length()));
+ pdoc->DeleteChars(selStart.Position(), drag.Length());
+ newPos.Add(-static_cast<Sci::Position>(drag.Length()));
const Sci::Position lengthInserted = pdoc->InsertString(
newPos.Position(), drag.Data(), length);
if (lengthInserted > 0) {
@@ -5023,9 +5013,9 @@ Sci::Position Editor::PositionAfterArea(PRectangle rcArea) const {
// detect multiline comment additions and heals single line comments
const Sci::Line lineAfter = TopLineOfMain() + static_cast<Sci::Line>(rcArea.bottom - 1) / vs.lineHeight + 1;
if (lineAfter < pcs->LinesDisplayed())
- return static_cast<Sci::Position>(pdoc->LineStart(pcs->DocFromDisplay(lineAfter) + 1));
+ return pdoc->LineStart(pcs->DocFromDisplay(lineAfter) + 1);
else
- return static_cast<Sci::Position>(pdoc->Length());
+ return pdoc->Length();
}
// Style to a position within the view. If this causes a change at end of last line then
@@ -5059,9 +5049,9 @@ Sci::Position Editor::PositionAfterMaxStyling(Sci::Position posMax, bool scrolli
const Sci::Line linesToStyle = std::clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine),
10, 0x10000);
const Sci::Line stylingMaxLine = std::min(
- static_cast<Sci::Line>(pdoc->LineFromPosition(pdoc->GetEndStyled()) + linesToStyle),
+ pdoc->SciLineFromPosition(pdoc->GetEndStyled()) + linesToStyle,
pdoc->LinesTotal());
- return std::min(static_cast<Sci::Position>(pdoc->LineStart(stylingMaxLine)), posMax);
+ return std::min(pdoc->LineStart(stylingMaxLine), posMax);
}
void Editor::StartIdleStyling(bool truncatedLastStyling) {
@@ -5097,7 +5087,7 @@ void Editor::StyleAreaBounded(PRectangle rcArea, bool scrolling) {
void Editor::IdleStyling() {
const Sci::Position posAfterArea = PositionAfterArea(GetClientRectangle());
const Sci::Position endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ?
- static_cast<Sci::Position>(pdoc->Length()) : posAfterArea;
+ pdoc->Length() : posAfterArea;
const Sci::Position posAfterMax = PositionAfterMaxStyling(endGoal, false);
pdoc->StyleToAdjustingLineDuration(posAfterMax);
if (pdoc->GetEndStyled() >= endGoal) {
@@ -5109,7 +5099,7 @@ void Editor::IdleWork() {
// Style the line after the modification as this allows modifications that change just the
// line of the modification to heal instead of propagating to the rest of the window.
if (workNeeded.items & WorkNeeded::workStyle) {
- StyleToPositionInView(static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2)));
+ StyleToPositionInView(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2));
}
NotifyUpdateUI();
workNeeded.Reset();
@@ -5305,8 +5295,8 @@ void Editor::FoldLine(Sci::Line line, int action) {
pcs->SetExpanded(line, false);
pcs->SetVisible(line + 1, lineMaxSubord, false);
- const Sci::Line lineCurrent = static_cast<Sci::Line>(
- pdoc->LineFromPosition(sel.MainCaret()));
+ const Sci::Line lineCurrent =
+ pdoc->SciLineFromPosition(sel.MainCaret());
if (lineCurrent > line && lineCurrent <= lineMaxSubord) {
// This does not re-expand the fold
EnsureCaretVisible();
@@ -5425,7 +5415,7 @@ void Editor::EnsureLineVisible(Sci::Line lineDoc, bool enforcePolicy) {
}
void Editor::FoldAll(int action) {
- pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->Length()));
+ pdoc->EnsureStyledTo(pdoc->Length());
const Sci::Line maxLine = pdoc->LinesTotal();
bool expanding = action == SC_FOLDACTION_EXPAND;
if (action == SC_FOLDACTION_TOGGLE) {
@@ -5446,7 +5436,7 @@ void Editor::FoldAll(int action) {
}
}
} else {
- for (int line = 0; line < maxLine; line++) {
+ for (Sci::Line line = 0; line < maxLine; line++) {
const int level = pdoc->GetLevel(line);
if ((level & SC_FOLDLEVELHEADERFLAG) &&
(SC_FOLDLEVELBASE == LevelNumber(level))) {
@@ -5514,8 +5504,8 @@ void Editor::FoldChanged(Sci::Line line, int levelNow, int levelPrev) {
void Editor::NeedShown(Sci::Position pos, Sci::Position len) {
if (foldAutomatic & SC_AUTOMATICFOLD_SHOW) {
- const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(pos));
- const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(pos+len));
+ const Sci::Line lineStart = pdoc->SciLineFromPosition(pos);
+ const Sci::Line lineEnd = pdoc->SciLineFromPosition(pos+len);
for (Sci::Line line = lineStart; line <= lineEnd; line++) {
EnsureLineVisible(line, false);
}
@@ -5545,7 +5535,7 @@ Sci::Position Editor::GetTag(char *tagValue, int tagNumber) {
Sci::Position Editor::ReplaceTarget(bool replacePatterns, const char *text, Sci::Position length) {
UndoGroup ug(pdoc);
if (length == -1)
- length = istrlen(text);
+ length = strlen(text);
if (replacePatterns) {
text = pdoc->SubstituteByPosition(text, &length);
if (!text) {
@@ -5571,7 +5561,7 @@ int Editor::CodePage() const {
return 0;
}
-int Editor::WrapCount(int line) {
+Sci::Line Editor::WrapCount(Sci::Line line) {
AutoSurface surface(this);
AutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this));
@@ -5705,27 +5695,27 @@ void Editor::SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t l
switch (iMessage) {
case SCI_SETSELECTIONNCARET:
- sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam));
+ sel.Range(wParam).caret.SetPosition(static_cast<Sci::Position>(lParam));
break;
case SCI_SETSELECTIONNANCHOR:
- sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam));
+ sel.Range(wParam).anchor.SetPosition(static_cast<Sci::Position>(lParam));
break;
case SCI_SETSELECTIONNCARETVIRTUALSPACE:
- sel.Range(wParam).caret.SetVirtualSpace(static_cast<int>(lParam));
+ sel.Range(wParam).caret.SetVirtualSpace(static_cast<Sci::Position>(lParam));
break;
case SCI_SETSELECTIONNANCHORVIRTUALSPACE:
- sel.Range(wParam).anchor.SetVirtualSpace(static_cast<int>(lParam));
+ sel.Range(wParam).anchor.SetVirtualSpace(static_cast<Sci::Position>(lParam));
break;
case SCI_SETSELECTIONNSTART:
- sel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam));
+ sel.Range(wParam).anchor.SetPosition(static_cast<Sci::Position>(lParam));
break;
case SCI_SETSELECTIONNEND:
- sel.Range(wParam).caret.SetPosition(static_cast<int>(lParam));
+ sel.Range(wParam).caret.SetPosition(static_cast<Sci::Position>(lParam));
break;
}
@@ -5783,10 +5773,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (lParam == 0)
return 0;
UndoGroup ug(pdoc);
- pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length()));
+ pdoc->DeleteChars(0, pdoc->Length());
SetEmptySelection(0);
const char *text = CharPtrFromSPtr(lParam);
- pdoc->InsertString(0, text, istrlen(text));
+ pdoc->InsertString(0, text, strlen(text));
return 1;
}
@@ -5819,11 +5809,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_COPYRANGE:
- CopyRangeToClipboard(static_cast<int>(wParam), static_cast<int>(lParam));
+ CopyRangeToClipboard(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
break;
case SCI_COPYTEXT:
- CopyText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));
+ CopyText(wParam, CharPtrFromSPtr(lParam));
break;
case SCI_PASTE:
@@ -5856,14 +5846,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return topLine;
case SCI_SETFIRSTVISIBLELINE:
- ScrollTo(static_cast<int>(wParam));
+ ScrollTo(static_cast<Sci::Line>(wParam));
break;
case SCI_GETLINE: { // Risk of overwriting the end of the buffer
- const Sci::Position lineStart = static_cast<Sci::Position>(
- pdoc->LineStart(static_cast<Sci::Line>(wParam)));
- const Sci::Position lineEnd = static_cast<Sci::Position>(
- pdoc->LineStart(static_cast<Sci::Line>(wParam + 1)));
+ const Sci::Position lineStart =
+ pdoc->LineStart(static_cast<Sci::Line>(wParam));
+ const Sci::Position lineEnd =
+ pdoc->LineStart(static_cast<Sci::Line>(wParam + 1));
if (lParam == 0) {
return lineEnd - lineStart;
}
@@ -5888,7 +5878,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
Sci::Position nStart = static_cast<Sci::Position>(wParam);
Sci::Position nEnd = static_cast<Sci::Position>(lParam);
if (nEnd < 0)
- nEnd = static_cast<Sci::Position>(pdoc->Length());
+ nEnd = pdoc->Length();
if (nStart < 0)
nStart = nEnd; // Remove selection
InvalidateSelection(SelectionRange(nStart, nEnd));
@@ -5918,12 +5908,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
}
case SCI_LINEFROMPOSITION:
- if (static_cast<int>(wParam) < 0)
+ if (static_cast<Sci::Position>(wParam) < 0)
return 0;
- return pdoc->LineFromPosition(static_cast<int>(wParam));
+ return pdoc->LineFromPosition(static_cast<Sci::Position>(wParam));
case SCI_POSITIONFROMLINE:
- if (static_cast<int>(wParam) < 0)
+ if (static_cast<Sci::Position>(wParam) < 0)
wParam = pdoc->LineFromPosition(SelectionStart().Position());
if (wParam == 0)
return 0; // Even if there is no text, there is a first line that starts at 0
@@ -5931,14 +5921,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return -1;
//if (wParam > pdoc->LineFromPosition(pdoc->Length())) // Useful test, anyway...
// return -1;
- return pdoc->LineStart(static_cast<int>(wParam));
+ return pdoc->LineStart(static_cast<Sci::Position>(wParam));
// Replacement of the old Scintilla interpretation of EM_LINELENGTH
case SCI_LINELENGTH:
- if ((static_cast<int>(wParam) < 0) ||
- (static_cast<int>(wParam) > pdoc->LineFromPosition(pdoc->Length())))
+ if ((static_cast<Sci::Position>(wParam) < 0) ||
+ (static_cast<Sci::Position>(wParam) > pdoc->LineFromPosition(pdoc->Length())))
return 0;
- return pdoc->LineStart(static_cast<int>(wParam) + 1) - pdoc->LineStart(static_cast<int>(wParam));
+ return pdoc->LineStart(static_cast<Sci::Position>(wParam) + 1) - pdoc->LineStart(static_cast<Sci::Position>(wParam));
case SCI_REPLACESEL: {
if (lParam == 0)
@@ -5947,7 +5937,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
ClearSelection();
const char *replacement = CharPtrFromSPtr(lParam);
const Sci::Position lengthInserted = pdoc->InsertString(
- sel.MainCaret(), replacement, istrlen(replacement));
+ sel.MainCaret(), replacement, strlen(replacement));
SetEmptySelection(sel.MainCaret() + lengthInserted);
SetLastXChosen();
EnsureCaretVisible();
@@ -5955,27 +5945,27 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_SETTARGETSTART:
- targetStart = static_cast<int>(wParam);
+ targetStart = static_cast<Sci::Position>(wParam);
break;
case SCI_GETTARGETSTART:
return targetStart;
case SCI_SETTARGETEND:
- targetEnd = static_cast<int>(wParam);
+ targetEnd = static_cast<Sci::Position>(wParam);
break;
case SCI_GETTARGETEND:
return targetEnd;
case SCI_SETTARGETRANGE:
- targetStart = static_cast<int>(wParam);
- targetEnd = static_cast<int>(lParam);
+ targetStart = static_cast<Sci::Position>(wParam);
+ targetEnd = static_cast<Sci::Position>(lParam);
break;
case SCI_TARGETWHOLEDOCUMENT:
targetStart = 0;
- targetEnd = static_cast<Sci::Position>(pdoc->Length());
+ targetEnd = pdoc->Length();
break;
case SCI_TARGETFROMSELECTION:
@@ -6016,14 +6006,15 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return GetTag(CharPtrFromSPtr(lParam), static_cast<int>(wParam));
case SCI_POSITIONBEFORE:
- return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) - 1, -1, true);
+ return pdoc->MovePositionOutsideChar(static_cast<Sci::Position>(wParam) - 1, -1, true);
case SCI_POSITIONAFTER:
- return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) + 1, 1, true);
+ return pdoc->MovePositionOutsideChar(static_cast<Sci::Position>(wParam) + 1, 1, true);
case SCI_POSITIONRELATIVE:
- return std::clamp(static_cast<int>(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam))),
- 0, static_cast<int>(pdoc->Length()));
+ return std::clamp(pdoc->GetRelativePosition(
+ static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)),
+ static_cast<Sci::Position>(0), pdoc->Length());
case SCI_LINESCROLL:
ScrollTo(topLine + static_cast<Sci::Line>(lParam));
@@ -6062,7 +6053,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (lParam < 0) {
return 0;
} else {
- const Point pt = LocationFromPosition(static_cast<int>(lParam));
+ const Point pt = LocationFromPosition(static_cast<Sci::Position>(lParam));
// Convert to view-relative
return static_cast<int>(pt.x) - vs.textStart + vs.fixedColumnWidth;
}
@@ -6071,7 +6062,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (lParam < 0) {
return 0;
} else {
- const Point pt = LocationFromPosition(static_cast<int>(lParam));
+ const Point pt = LocationFromPosition(static_cast<Sci::Position>(lParam));
return static_cast<int>(pt.y);
}
@@ -6084,10 +6075,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam);
Sci::Position cpMax = static_cast<Sci::Position>(tr->chrg.cpMax);
if (cpMax == -1)
- cpMax = static_cast<Sci::Position>(pdoc->Length());
+ cpMax = pdoc->Length();
PLATFORM_ASSERT(cpMax <= pdoc->Length());
- int len = static_cast<int>(cpMax - tr->chrg.cpMin); // No -1 as cpMin and cpMax are referring to inter character positions
- pdoc->GetCharRange(tr->lpstrText, static_cast<int>(tr->chrg.cpMin), len);
+ Sci::Position len = cpMax - tr->chrg.cpMin; // No -1 as cpMin and cpMax are referring to inter character positions
+ pdoc->GetCharRange(tr->lpstrText, tr->chrg.cpMin, len);
// Spec says copied text is terminated with a NUL
tr->lpstrText[len] = '\0';
return len; // Not including NUL
@@ -6138,11 +6129,11 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (lParam == 0)
return 0;
Sci::Position insertPos = static_cast<Sci::Position>(wParam);
- if (static_cast<int>(wParam) == -1)
+ if (insertPos == -1)
insertPos = CurrentPosition();
Sci::Position newCurrent = CurrentPosition();
const char *sz = CharPtrFromSPtr(lParam);
- const Sci::Position lengthInserted = pdoc->InsertString(insertPos, sz, istrlen(sz));
+ const Sci::Position lengthInserted = pdoc->InsertString(insertPos, sz, strlen(sz));
if (newCurrent > insertPos)
newCurrent += lengthInserted;
SetEmptySelection(newCurrent);
@@ -6151,12 +6142,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_CHANGEINSERTION:
PLATFORM_ASSERT(lParam);
- pdoc->ChangeInsertion(CharPtrFromSPtr(lParam), static_cast<int>(wParam));
+ pdoc->ChangeInsertion(CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam));
return 0;
case SCI_APPENDTEXT:
- pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()),
- CharPtrFromSPtr(lParam), static_cast<int>(wParam));
+ pdoc->InsertString(pdoc->Length(),
+ CharPtrFromSPtr(lParam), static_cast<Sci::Position>(wParam));
return 0;
case SCI_CLEARALL:
@@ -6164,7 +6155,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return 0;
case SCI_DELETERANGE:
- pdoc->DeleteChars(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->DeleteChars(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
return 0;
case SCI_CLEARDOCUMENTSTYLE:
@@ -6240,7 +6231,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_SETCURRENTPOS:
if (sel.IsRectangular()) {
- sel.Rectangular().caret.SetPosition(static_cast<int>(wParam));
+ sel.Rectangular().caret.SetPosition(static_cast<Sci::Position>(wParam));
SetRectangularRange();
Redraw();
} else {
@@ -6279,7 +6270,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return sel.LimitsForRectangularElseMain().end.Position();
case SCI_SETEMPTYSELECTION:
- SetEmptySelection(static_cast<int>(wParam));
+ SetEmptySelection(static_cast<Sci::Position>(wParam));
break;
case SCI_SETPRINTMAGNIFICATION:
@@ -6304,10 +6295,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return view.printParameters.wrapState;
case SCI_GETSTYLEAT:
- if (static_cast<int>(wParam) >= pdoc->Length())
+ if (static_cast<Sci::Position>(wParam) >= pdoc->Length())
return 0;
else
- return pdoc->StyleAt(static_cast<int>(wParam));
+ return pdoc->StyleAt(static_cast<Sci::Position>(wParam));
case SCI_REDO:
Redo();
@@ -6327,8 +6318,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam);
int iPlace = 0;
for (long iChar = tr->chrg.cpMin; iChar < tr->chrg.cpMax; iChar++) {
- tr->lpstrText[iPlace++] = pdoc->CharAt(static_cast<int>(iChar));
- tr->lpstrText[iPlace++] = pdoc->StyleAt(static_cast<int>(iChar));
+ tr->lpstrText[iPlace++] = pdoc->CharAt(iChar);
+ tr->lpstrText[iPlace++] = pdoc->StyleAt(iChar);
}
tr->lpstrText[iPlace] = '\0';
tr->lpstrText[iPlace + 1] = '\0';
@@ -6386,18 +6377,18 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
true, true);
case SCI_GOTOLINE:
- GoToLine(static_cast<int>(wParam));
+ GoToLine(static_cast<Sci::Line>(wParam));
break;
case SCI_GOTOPOS:
- SetEmptySelection(static_cast<int>(wParam));
+ SetEmptySelection(static_cast<Sci::Position>(wParam));
EnsureCaretVisible();
break;
case SCI_GETCURLINE: {
- const Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- const Sci::Position lineStart = static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos));
- const Sci::Position lineEnd = static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1));
+ const Sci::Line lineCurrentPos = pdoc->SciLineFromPosition(sel.MainCaret());
+ const Sci::Position lineStart = pdoc->LineStart(lineCurrentPos);
+ const Sci::Position lineEnd = pdoc->LineStart(lineCurrentPos + 1);
if (lParam == 0) {
return 1 + lineEnd - lineStart;
}
@@ -6437,20 +6428,20 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return pdoc->GetLineEndTypesActive();
case SCI_STARTSTYLING:
- pdoc->StartStyling(static_cast<int>(wParam));
+ pdoc->StartStyling(static_cast<Sci::Position>(wParam));
break;
case SCI_SETSTYLING:
- if (static_cast<int>(wParam) < 0)
+ if (static_cast<Sci::Position>(wParam) < 0)
errorStatus = SC_STATUS_FAILURE;
else
- pdoc->SetStyleFor(static_cast<int>(wParam), static_cast<char>(lParam));
+ pdoc->SetStyleFor(static_cast<Sci::Position>(wParam), static_cast<char>(lParam));
break;
case SCI_SETSTYLINGEX: // Specify a complete styling buffer
if (lParam == 0)
return 0;
- pdoc->SetStyles(static_cast<int>(wParam), CharPtrFromSPtr(lParam));
+ pdoc->SetStyles(static_cast<Sci::Position>(wParam), CharPtrFromSPtr(lParam));
break;
case SCI_SETBUFFEREDDRAW:
@@ -6500,21 +6491,21 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return pdoc->tabInChars;
case SCI_CLEARTABSTOPS:
- if (view.ClearTabstops(static_cast<int>(wParam))) {
- const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<int>(wParam));
+ if (view.ClearTabstops(static_cast<Sci::Line>(wParam))) {
+ const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<Sci::Line>(wParam));
NotifyModified(pdoc, mh, NULL);
}
break;
case SCI_ADDTABSTOP:
- if (view.AddTabstop(static_cast<int>(wParam), static_cast<int>(lParam))) {
- const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<int>(wParam));
+ if (view.AddTabstop(static_cast<Sci::Line>(wParam), static_cast<int>(lParam))) {
+ const DocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<Sci::Line>(wParam));
NotifyModified(pdoc, mh, NULL);
}
break;
case SCI_GETNEXTTABSTOP:
- return view.GetNextTabstop(static_cast<int>(wParam), static_cast<int>(lParam));
+ return view.GetNextTabstop(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
case SCI_SETINDENT:
pdoc->indentInChars = static_cast<int>(wParam);
@@ -6537,14 +6528,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return pdoc->useTabs;
case SCI_SETLINEINDENTATION:
- pdoc->SetLineIndentation(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->SetLineIndentation(static_cast<Sci::Line>(wParam), static_cast<Sci::Position>(lParam));
break;
case SCI_GETLINEINDENTATION:
- return pdoc->GetLineIndentation(static_cast<int>(wParam));
+ return pdoc->GetLineIndentation(static_cast<Sci::Line>(wParam));
case SCI_GETLINEINDENTPOSITION:
- return pdoc->GetLineIndentPosition(static_cast<int>(wParam));
+ return pdoc->GetLineIndentPosition(static_cast<Sci::Line>(wParam));
case SCI_SETTABINDENTS:
pdoc->tabIndents = wParam != 0;
@@ -6569,13 +6560,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return dwellDelay;
case SCI_WORDSTARTPOSITION:
- return pdoc->ExtendWordSelect(static_cast<int>(wParam), -1, lParam != 0);
+ return pdoc->ExtendWordSelect(static_cast<Sci::Position>(wParam), -1, lParam != 0);
case SCI_WORDENDPOSITION:
- return pdoc->ExtendWordSelect(static_cast<int>(wParam), 1, lParam != 0);
+ return pdoc->ExtendWordSelect(static_cast<Sci::Position>(wParam), 1, lParam != 0);
case SCI_ISRANGEWORD:
- return pdoc->IsWordAt(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->IsWordAt(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
case SCI_SETIDLESTYLING:
idleStyling = static_cast<int>(wParam);
@@ -6651,7 +6642,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_SETSCROLLWIDTH:
PLATFORM_ASSERT(wParam > 0);
- if ((wParam > 0) && (wParam != static_cast<unsigned int >(scrollWidth))) {
+ if ((wParam > 0) && (wParam != static_cast<unsigned int>(scrollWidth))) {
view.lineWidthMaxSeen = 0;
scrollWidth = static_cast<int>(wParam);
SetScrollBars();
@@ -6711,10 +6702,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_GETCOLUMN:
- return pdoc->GetColumn(static_cast<int>(wParam));
+ return pdoc->GetColumn(static_cast<Sci::Position>(wParam));
case SCI_FINDCOLUMN:
- return pdoc->FindColumn(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->FindColumn(static_cast<Sci::Line>(wParam), static_cast<Sci::Position>(lParam));
case SCI_SETHSCROLLBAR :
if (horizontalScrollBarVisible != (wParam != 0)) {
@@ -6759,7 +6750,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return highlightGuideColumn;
case SCI_GETLINEENDPOSITION:
- return pdoc->LineEnd(static_cast<int>(wParam));
+ return pdoc->LineEnd(static_cast<Sci::Line>(wParam));
case SCI_SETCODEPAGE:
if (ValidCodePage(static_cast<int>(wParam))) {
@@ -6834,16 +6825,16 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
InvalidateStyleRedraw();
break;
case SCI_MARKERADD: {
- const int markerID = pdoc->AddMark(static_cast<int>(wParam), static_cast<int>(lParam));
+ const int markerID = pdoc->AddMark(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
return markerID;
}
case SCI_MARKERADDSET:
if (lParam != 0)
- pdoc->AddMarkSet(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->AddMarkSet(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
break;
case SCI_MARKERDELETE:
- pdoc->DeleteMark(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->DeleteMark(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
break;
case SCI_MARKERDELETEALL:
@@ -6851,13 +6842,13 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_MARKERGET:
- return pdoc->GetMark(static_cast<int>(wParam));
+ return pdoc->GetMark(static_cast<Sci::Line>(wParam));
case SCI_MARKERNEXT:
- return pdoc->MarkerNext(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->MarkerNext(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
case SCI_MARKERPREVIOUS: {
- for (int iLine = static_cast<int>(wParam); iLine >= 0; iLine--) {
+ for (Sci::Line iLine = static_cast<Sci::Line>(wParam); iLine >= 0; iLine--) {
if ((pdoc->GetMark(iLine) & lParam) != 0)
return iLine;
}
@@ -7037,10 +7028,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
#endif
case SCI_SETLINESTATE:
- return pdoc->SetLineState(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->SetLineState(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
case SCI_GETLINESTATE:
- return pdoc->GetLineState(static_cast<int>(wParam));
+ return pdoc->GetLineState(static_cast<Sci::Line>(wParam));
case SCI_GETMAXLINESTATE:
return pdoc->GetMaxLineState();
@@ -7067,7 +7058,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_GETCARETLINEBACK:
return vs.caretLineBackground.AsLong();
case SCI_SETCARETLINEBACK:
- vs.caretLineBackground = static_cast<int>(wParam);
+ vs.caretLineBackground = ColourDesired(static_cast<long>(wParam));
InvalidateStyleRedraw();
break;
case SCI_GETCARETLINEBACKALPHA:
@@ -7080,55 +7071,55 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
// Folding messages
case SCI_VISIBLEFROMDOCLINE:
- return pcs->DisplayFromDoc(static_cast<int>(wParam));
+ return pcs->DisplayFromDoc(static_cast<Sci::Line>(wParam));
case SCI_DOCLINEFROMVISIBLE:
- return pcs->DocFromDisplay(static_cast<int>(wParam));
+ return pcs->DocFromDisplay(static_cast<Sci::Line>(wParam));
case SCI_WRAPCOUNT:
- return WrapCount(static_cast<int>(wParam));
+ return WrapCount(static_cast<Sci::Line>(wParam));
case SCI_SETFOLDLEVEL: {
- const int prev = pdoc->SetLevel(static_cast<int>(wParam), static_cast<int>(lParam));
+ const int prev = pdoc->SetLevel(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
if (prev != static_cast<int>(lParam))
RedrawSelMargin();
return prev;
}
case SCI_GETFOLDLEVEL:
- return pdoc->GetLevel(static_cast<int>(wParam));
+ return pdoc->GetLevel(static_cast<Sci::Line>(wParam));
case SCI_GETLASTCHILD:
- return pdoc->GetLastChild(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->GetLastChild(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
case SCI_GETFOLDPARENT:
- return pdoc->GetFoldParent(static_cast<int>(wParam));
+ return pdoc->GetFoldParent(static_cast<Sci::Line>(wParam));
case SCI_SHOWLINES:
- pcs->SetVisible(static_cast<int>(wParam), static_cast<int>(lParam), true);
+ pcs->SetVisible(static_cast<Sci::Line>(wParam), static_cast<Sci::Line>(lParam), true);
SetScrollBars();
Redraw();
break;
case SCI_HIDELINES:
if (wParam > 0)
- pcs->SetVisible(static_cast<int>(wParam), static_cast<int>(lParam), false);
+ pcs->SetVisible(static_cast<Sci::Line>(wParam), static_cast<Sci::Line>(lParam), false);
SetScrollBars();
Redraw();
break;
case SCI_GETLINEVISIBLE:
- return pcs->GetVisible(static_cast<int>(wParam));
+ return pcs->GetVisible(static_cast<Sci::Line>(wParam));
case SCI_GETALLLINESVISIBLE:
return pcs->HiddenLines() ? 0 : 1;
case SCI_SETFOLDEXPANDED:
- SetFoldExpanded(static_cast<int>(wParam), lParam != 0);
+ SetFoldExpanded(static_cast<Sci::Line>(wParam), lParam != 0);
break;
case SCI_GETFOLDEXPANDED:
- return pcs->GetExpanded(static_cast<int>(wParam));
+ return pcs->GetExpanded(static_cast<Sci::Line>(wParam));
case SCI_SETAUTOMATICFOLD:
foldAutomatic = static_cast<int>(wParam);
@@ -7143,8 +7134,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_TOGGLEFOLDSHOWTEXT:
- pcs->SetFoldDisplayText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));
- FoldLine(static_cast<int>(wParam), SC_FOLDACTION_TOGGLE);
+ pcs->SetFoldDisplayText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam));
+ FoldLine(static_cast<Sci::Line>(wParam), SC_FOLDACTION_TOGGLE);
break;
case SCI_FOLDDISPLAYTEXTSETSTYLE:
@@ -7153,15 +7144,15 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_TOGGLEFOLD:
- FoldLine(static_cast<int>(wParam), SC_FOLDACTION_TOGGLE);
+ FoldLine(static_cast<Sci::Line>(wParam), SC_FOLDACTION_TOGGLE);
break;
case SCI_FOLDLINE:
- FoldLine(static_cast<int>(wParam), static_cast<int>(lParam));
+ FoldLine(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
break;
case SCI_FOLDCHILDREN:
- FoldExpand(static_cast<int>(wParam), static_cast<int>(lParam), pdoc->GetLevel(static_cast<int>(wParam)));
+ FoldExpand(static_cast<Sci::Line>(wParam), static_cast<int>(lParam), pdoc->GetLevel(static_cast<int>(wParam)));
break;
case SCI_FOLDALL:
@@ -7169,22 +7160,22 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_EXPANDCHILDREN:
- FoldExpand(static_cast<int>(wParam), SC_FOLDACTION_EXPAND, static_cast<int>(lParam));
+ FoldExpand(static_cast<Sci::Line>(wParam), SC_FOLDACTION_EXPAND, static_cast<int>(lParam));
break;
case SCI_CONTRACTEDFOLDNEXT:
- return ContractedFoldNext(static_cast<int>(wParam));
+ return ContractedFoldNext(static_cast<Sci::Line>(wParam));
case SCI_ENSUREVISIBLE:
- EnsureLineVisible(static_cast<int>(wParam), false);
+ EnsureLineVisible(static_cast<Sci::Line>(wParam), false);
break;
case SCI_ENSUREVISIBLEENFORCEPOLICY:
- EnsureLineVisible(static_cast<int>(wParam), true);
+ EnsureLineVisible(static_cast<Sci::Line>(wParam), true);
break;
case SCI_SCROLLRANGE:
- ScrollRange(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam)));
+ ScrollRange(SelectionRange(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)));
break;
case SCI_SEARCHANCHOR:
@@ -7393,24 +7384,26 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return pdoc->decorations->GetCurrentValue();
case SCI_INDICATORFILLRANGE:
- pdoc->DecorationFillRange(static_cast<int>(wParam), pdoc->decorations->GetCurrentValue(), static_cast<int>(lParam));
+ pdoc->DecorationFillRange(static_cast<Sci::Position>(wParam),
+ pdoc->decorations->GetCurrentValue(), static_cast<Sci::Position>(lParam));
break;
case SCI_INDICATORCLEARRANGE:
- pdoc->DecorationFillRange(static_cast<int>(wParam), 0, static_cast<int>(lParam));
+ pdoc->DecorationFillRange(static_cast<Sci::Position>(wParam), 0,
+ static_cast<Sci::Position>(lParam));
break;
case SCI_INDICATORALLONFOR:
- return pdoc->decorations->AllOnFor(static_cast<int>(wParam));
+ return pdoc->decorations->AllOnFor(static_cast<Sci::Position>(wParam));
case SCI_INDICATORVALUEAT:
- return pdoc->decorations->ValueAt(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->decorations->ValueAt(static_cast<int>(wParam), static_cast<Sci::Position>(lParam));
case SCI_INDICATORSTART:
- return pdoc->decorations->Start(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->decorations->Start(static_cast<int>(wParam), static_cast<Sci::Position>(lParam));
case SCI_INDICATOREND:
- return pdoc->decorations->End(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->decorations->End(static_cast<int>(wParam), static_cast<Sci::Position>(lParam));
case SCI_LINEDOWN:
case SCI_LINEDOWNEXTEND:
@@ -7508,7 +7501,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return KeyCommand(iMessage);
case SCI_BRACEHIGHLIGHT:
- SetBraceHighlight(static_cast<int>(wParam), static_cast<int>(lParam), STYLE_BRACELIGHT);
+ SetBraceHighlight(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam), STYLE_BRACELIGHT);
break;
case SCI_BRACEHIGHLIGHTINDICATOR:
@@ -7519,7 +7512,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_BRACEBADLIGHT:
- SetBraceHighlight(static_cast<int>(wParam), -1, STYLE_BRACEBAD);
+ SetBraceHighlight(static_cast<Sci::Position>(wParam), -1, STYLE_BRACEBAD);
break;
case SCI_BRACEBADLIGHTINDICATOR:
@@ -7532,7 +7525,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_BRACEMATCH:
// wParam is position of char to find brace for,
// lParam is maximum amount of text to restyle to find it
- return pdoc->BraceMatch(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->BraceMatch(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
case SCI_GETVIEWEOL:
return vs.viewEOL;
@@ -7603,7 +7596,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_CREATEDOCUMENT: {
Document *doc = new Document(static_cast<int>(lParam));
doc->AddRef();
- doc->Allocate(static_cast<int>(wParam));
+ doc->Allocate(static_cast<Sci::Position>(wParam));
pcs = ContractionStateCreate(pdoc->IsLarge());
return reinterpret_cast<sptr_t>(doc);
}
@@ -7622,7 +7615,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_CREATELOADER: {
Document *doc = new Document(static_cast<int>(lParam));
doc->AddRef();
- doc->Allocate(static_cast<int>(wParam));
+ doc->Allocate(static_cast<Sci::Position>(wParam));
doc->SetUndoCollection(false);
pcs = ContractionStateCreate(pdoc->IsLarge());
return reinterpret_cast<sptr_t>(static_cast<ILoader *>(doc));
@@ -7641,7 +7634,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return 0;
case SCI_SETLENGTHFORENCODE:
- lengthForEncode = static_cast<int>(wParam);
+ lengthForEncode = static_cast<Sci::Position>(wParam);
return 0;
case SCI_SELECTIONISRECTANGLE:
@@ -7692,8 +7685,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
case SCI_GETLINESELSTARTPOSITION:
case SCI_GETLINESELENDPOSITION: {
const SelectionSegment segmentLine(
- SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(static_cast<int>(wParam)))),
- SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(static_cast<int>(wParam)))));
+ SelectionPosition(pdoc->LineStart(static_cast<Sci::Position>(wParam))),
+ SelectionPosition(pdoc->LineEnd(static_cast<Sci::Position>(wParam))));
for (size_t r=0; r<sel.Count(); r++) {
const SelectionSegment portion = sel.Range(r).Intersect(segmentLine);
if (portion.start.IsValid()) {
@@ -7840,7 +7833,8 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return reinterpret_cast<sptr_t>(pdoc->BufferPointer());
case SCI_GETRANGEPOINTER:
- return reinterpret_cast<sptr_t>(pdoc->RangePointer(static_cast<int>(wParam), static_cast<int>(lParam)));
+ return reinterpret_cast<sptr_t>(pdoc->RangePointer(
+ static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)));
case SCI_GETGAPPOSITION:
return pdoc->GapPosition();
@@ -7877,29 +7871,29 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return marginOptions;
case SCI_MARGINSETTEXT:
- pdoc->MarginSetText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));
+ pdoc->MarginSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam));
break;
case SCI_MARGINGETTEXT: {
- const StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam));
+ const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam));
return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);
}
case SCI_MARGINSETSTYLE:
- pdoc->MarginSetStyle(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->MarginSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
break;
case SCI_MARGINGETSTYLE: {
- const StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam));
+ const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam));
return st.style;
}
case SCI_MARGINSETSTYLES:
- pdoc->MarginSetStyles(static_cast<int>(wParam), reinterpret_cast<const unsigned char *>(lParam));
+ pdoc->MarginSetStyles(static_cast<Sci::Line>(wParam), reinterpret_cast<const unsigned char *>(lParam));
break;
case SCI_MARGINGETSTYLES: {
- const StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam));
+ const StyledText st = pdoc->MarginStyledText(static_cast<Sci::Line>(wParam));
return BytesResult(lParam, st.styles, st.length);
}
@@ -7908,34 +7902,34 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_ANNOTATIONSETTEXT:
- pdoc->AnnotationSetText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));
+ pdoc->AnnotationSetText(static_cast<Sci::Line>(wParam), CharPtrFromSPtr(lParam));
break;
case SCI_ANNOTATIONGETTEXT: {
- const StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam));
+ const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam));
return BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);
}
case SCI_ANNOTATIONGETSTYLE: {
- const StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam));
+ const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam));
return st.style;
}
case SCI_ANNOTATIONSETSTYLE:
- pdoc->AnnotationSetStyle(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->AnnotationSetStyle(static_cast<Sci::Line>(wParam), static_cast<int>(lParam));
break;
case SCI_ANNOTATIONSETSTYLES:
- pdoc->AnnotationSetStyles(static_cast<int>(wParam), reinterpret_cast<const unsigned char *>(lParam));
+ pdoc->AnnotationSetStyles(static_cast<Sci::Line>(wParam), reinterpret_cast<const unsigned char *>(lParam));
break;
case SCI_ANNOTATIONGETSTYLES: {
- const StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam));
+ const StyledText st = pdoc->AnnotationStyledText(static_cast<Sci::Line>(wParam));
return BytesResult(lParam, st.styles, st.length);
}
case SCI_ANNOTATIONGETLINES:
- return pdoc->AnnotationLines(static_cast<int>(wParam));
+ return pdoc->AnnotationLines(static_cast<Sci::Line>(wParam));
case SCI_ANNOTATIONCLEARALL:
pdoc->AnnotationClearAll();
@@ -7964,7 +7958,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return vs.AllocateExtendedStyles(static_cast<int>(wParam));
case SCI_ADDUNDOACTION:
- pdoc->AddUndoAction(static_cast<int>(wParam), lParam & UNDO_MAY_COALESCE);
+ pdoc->AddUndoAction(static_cast<Sci::Position>(wParam), lParam & UNDO_MAY_COALESCE);
break;
case SCI_SETMOUSESELECTIONRECTANGULARSWITCH:
@@ -8026,24 +8020,24 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_SETSELECTION:
- sel.SetSelection(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam)));
+ sel.SetSelection(SelectionRange(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)));
Redraw();
break;
case SCI_ADDSELECTION:
- sel.AddSelection(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam)));
+ sel.AddSelection(SelectionRange(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam)));
ContainerNeedsUpdate(SC_UPDATE_SELECTION);
Redraw();
break;
case SCI_DROPSELECTIONN:
- sel.DropSelection(static_cast<int>(wParam));
+ sel.DropSelection(static_cast<size_t>(wParam));
ContainerNeedsUpdate(SC_UPDATE_SELECTION);
Redraw();
break;
case SCI_SETMAINSELECTION:
- sel.SetMain(static_cast<int>(wParam));
+ sel.SetMain(static_cast<size_t>(wParam));
ContainerNeedsUpdate(SC_UPDATE_SELECTION);
Redraw();
break;
@@ -8082,7 +8076,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (!sel.IsRectangular())
sel.Clear();
sel.selType = Selection::selRectangle;
- sel.Rectangular().caret.SetPosition(static_cast<int>(wParam));
+ sel.Rectangular().caret.SetPosition(static_cast<Sci::Position>(wParam));
SetRectangularRange();
Redraw();
break;
@@ -8094,7 +8088,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (!sel.IsRectangular())
sel.Clear();
sel.selType = Selection::selRectangle;
- sel.Rectangular().anchor.SetPosition(static_cast<int>(wParam));
+ sel.Rectangular().anchor.SetPosition(static_cast<Sci::Position>(wParam));
SetRectangularRange();
Redraw();
break;
@@ -8106,7 +8100,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (!sel.IsRectangular())
sel.Clear();
sel.selType = Selection::selRectangle;
- sel.Rectangular().caret.SetVirtualSpace(static_cast<int>(wParam));
+ sel.Rectangular().caret.SetVirtualSpace(static_cast<Sci::Position>(wParam));
SetRectangularRange();
Redraw();
break;
@@ -8118,7 +8112,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (!sel.IsRectangular())
sel.Clear();
sel.selType = Selection::selRectangle;
- sel.Rectangular().anchor.SetVirtualSpace(static_cast<int>(wParam));
+ sel.Rectangular().anchor.SetVirtualSpace(static_cast<Sci::Position>(wParam));
SetRectangularRange();
Redraw();
break;
@@ -8178,7 +8172,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
break;
case SCI_CHANGELEXERSTATE:
- pdoc->ChangeLexerState(static_cast<int>(wParam), static_cast<int>(lParam));
+ pdoc->ChangeLexerState(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
break;
case SCI_SETIDENTIFIER:
@@ -8196,7 +8190,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
return technology;
case SCI_COUNTCHARACTERS:
- return pdoc->CountCharacters(static_cast<int>(wParam), static_cast<int>(lParam));
+ return pdoc->CountCharacters(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
default:
return DefWndProc(iMessage, wParam, lParam);
diff --git a/src/Editor.h b/src/Editor.h
index db070916d..3f6f8f2c8 100644
--- a/src/Editor.h
+++ b/src/Editor.h
@@ -394,9 +394,9 @@ protected: // ScintillaBase subclass needs access to much of Editor
void AddChar(char ch);
virtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false);
void ClearBeforeTentativeStart();
- void InsertPaste(const char *text, int len);
+ void InsertPaste(const char *text, Sci::Position len);
enum PasteShape { pasteStream=0, pasteRectangular = 1, pasteLine = 2 };
- void InsertPasteShape(const char *text, int len, PasteShape shape);
+ void InsertPasteShape(const char *text, Sci::Position len, PasteShape shape);
void ClearSelection(bool retainMultipleSelections = false);
void ClearAll();
void ClearDocumentStyle();
@@ -483,7 +483,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
std::string RangeText(Sci::Position start, Sci::Position end) const;
void CopySelectionRange(SelectionText *ss, bool allowLineCopy=false);
void CopyRangeToClipboard(Sci::Position start, Sci::Position end);
- void CopyText(int length, const char *text);
+ void CopyText(size_t length, const char *text);
void SetDragPosition(SelectionPosition newPos);
virtual void DisplayCursor(Window::Cursor c);
virtual bool DragThreshold(Point ptStart, Point ptNow);
@@ -557,7 +557,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
int CodePage() const;
virtual bool ValidCodePage(int /* codePage */) const { return true; }
- int WrapCount(int line);
+ Sci::Line WrapCount(Sci::Line line);
void AddStyledText(char *buffer, Sci::Position appendLength);
virtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0;
diff --git a/src/MarginView.cxx b/src/MarginView.cxx
index 02a961b10..09f1b636d 100644
--- a/src/MarginView.cxx
+++ b/src/MarginView.cxx
@@ -245,7 +245,7 @@ void MarginView::PaintMargin(Surface *surface, Sci::Line topLine, PRectangle rc,
if (highlightDelimiter.isEnabled) {
const Sci::Line lastLine = model.pcs->DocFromDisplay(topLine + model.LinesOnScreen()) + 1;
model.pdoc->GetHighlightDelimiters(highlightDelimiter,
- static_cast<Sci::Line>(model.pdoc->LineFromPosition(model.sel.MainCaret())), lastLine);
+ model.pdoc->SciLineFromPosition(model.sel.MainCaret()), lastLine);
}
}
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index febc4f11f..4df4c2a13 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -247,7 +247,7 @@ void ScintillaBase::AutoCompleteStart(Sci::Position lenEntered, const char *list
if (list && !strchr(list, ac.GetSeparator())) {
const char *typeSep = strchr(list, ac.GetTypesep());
const Sci::Position lenInsert = typeSep ?
- static_cast<Sci::Position>(typeSep-list) : static_cast<Sci::Position>(strlen(list));
+ (typeSep-list) : strlen(list);
if (ac.ignoreCase) {
// May need to convert the case before invocation, so remove lenEntered characters
AutoCompleteInsert(sel.MainCaret() - lenEntered, lenEntered, list, lenInsert);
@@ -423,7 +423,7 @@ void ScintillaBase::AutoCompleteCompleted(char ch, unsigned int completionMethod
endPos = pdoc->ExtendWordSelect(endPos, 1, true);
if (endPos < firstPos)
return;
- AutoCompleteInsert(firstPos, endPos - firstPos, selected.c_str(), static_cast<Sci::Position>(selected.length()));
+ AutoCompleteInsert(firstPos, endPos - firstPos, selected.c_str(), selected.length());
SetLastXChosen();
scn.nmhdr.code = SCN_AUTOCCOMPLETED;
@@ -656,7 +656,7 @@ void LexState::SetWordList(int n, const char *wl) {
if (instance) {
const Sci_Position firstModification = instance->WordListSet(n, wl);
if (firstModification >= 0) {
- pdoc->ModifiedAt(static_cast<Sci::Position>(firstModification));
+ pdoc->ModifiedAt(firstModification);
}
}
}
@@ -702,7 +702,7 @@ void LexState::PropSet(const char *key, const char *val) {
if (instance) {
const Sci_Position firstModification = instance->PropertySet(key, val);
if (firstModification >= 0) {
- pdoc->ModifiedAt(static_cast<Sci::Position>(firstModification));
+ pdoc->ModifiedAt(firstModification);
}
}
}
@@ -825,10 +825,10 @@ const char *LexState::DescriptionOfStyle(int style) {
void ScintillaBase::NotifyStyleToNeeded(Sci::Position endStyleNeeded) {
#ifdef SCI_LEXER
if (DocumentLexState()->lexLanguage != SCLEX_CONTAINER) {
- const Sci::Line lineEndStyled = static_cast<Sci::Line>(
- pdoc->LineFromPosition(pdoc->GetEndStyled()));
- const Sci::Position endStyled = static_cast<Sci::Position>(
- pdoc->LineStart(lineEndStyled));
+ const Sci::Line lineEndStyled =
+ pdoc->SciLineFromPosition(pdoc->GetEndStyled());
+ const Sci::Position endStyled =
+ pdoc->LineStart(lineEndStyled);
DocumentLexState()->Colourise(endStyled, endStyleNeeded);
return;
}
@@ -984,7 +984,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara
return ac.GetTypesep();
case SCI_CALLTIPSHOW:
- CallTipShow(LocationFromPosition(static_cast<int>(wParam)),
+ CallTipShow(LocationFromPosition(static_cast<Sci::Position>(wParam)),
reinterpret_cast<const char *>(lParam));
break;
@@ -999,7 +999,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara
return ct.posStartCallTip;
case SCI_CALLTIPSETPOSSTART:
- ct.posStartCallTip = static_cast<int>(wParam);
+ ct.posStartCallTip = static_cast<Sci::Position>(wParam);
break;
case SCI_CALLTIPSETHLT:
@@ -1048,7 +1048,7 @@ sptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lPara
case SCI_COLOURISE:
if (DocumentLexState()->lexLanguage == SCLEX_CONTAINER) {
pdoc->ModifiedAt(static_cast<Sci::Position>(wParam));
- NotifyStyleToNeeded((lParam == -1) ? static_cast<Sci::Position>(pdoc->Length()) :
+ NotifyStyleToNeeded((lParam == -1) ? pdoc->Length() :
static_cast<Sci::Position>(lParam));
} else {
DocumentLexState()->Colourise(static_cast<Sci::Position>(wParam), static_cast<Sci::Position>(lParam));
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index b970a7816..b08b79d34 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -770,7 +770,7 @@ Sci::Position ScintillaWin::TargetAsUTF8(char *text) {
// Translates a nul terminated UTF8 string into the document encoding.
// Return the length of the result in bytes.
Sci::Position ScintillaWin::EncodedFromUTF8(const char *utf8, char *encoded) const {
- const Sci::Position inputLength = (lengthForEncode >= 0) ? lengthForEncode : static_cast<Sci::Position>(strlen(utf8));
+ const Sci::Position inputLength = (lengthForEncode >= 0) ? lengthForEncode : strlen(utf8);
if (IsUnicodeMode()) {
if (encoded) {
memcpy(encoded, utf8, inputLength);
@@ -961,7 +961,7 @@ void ScintillaWin::SelectionToHangul() {
if (converted > 0) {
pdoc->BeginUndoAction();
ClearSelection();
- InsertPaste(&documentStr[0], static_cast<int>(documentStr.size()));
+ InsertPaste(&documentStr[0], documentStr.size());
pdoc->EndUndoAction();
}
}
@@ -1209,7 +1209,7 @@ sptr_t ScintillaWin::GetText(uptr_t wParam, sptr_t lParam) {
std::vector<char> docBytes(pdoc->Length(), '\0');
pdoc->GetCharRange(&docBytes[0], 0, pdoc->Length());
if (IsUnicodeMode()) {
- size_t lengthUTF16 = UTF16Length(&docBytes[0], static_cast<unsigned int>(docBytes.size()));
+ size_t lengthUTF16 = UTF16Length(&docBytes[0], docBytes.size());
if (lParam == 0)
return lengthUTF16;
if (wParam == 0)
@@ -1675,7 +1675,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
Sci::Position nStart = static_cast<Sci::Position>(wParam);
Sci::Position nEnd = static_cast<Sci::Position>(lParam);
if (nStart == 0 && nEnd == -1) {
- nEnd = static_cast<Sci::Position>(pdoc->Length());
+ nEnd = pdoc->Length();
}
if (nStart == -1) {
nStart = nEnd; // Remove selection
@@ -1692,7 +1692,7 @@ sptr_t ScintillaWin::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam
Sci_CharacterRange *pCR = reinterpret_cast<Sci_CharacterRange *>(lParam);
sel.selType = Selection::selStream;
if (pCR->cpMin == 0 && pCR->cpMax == -1) {
- SetSelection(pCR->cpMin, static_cast<Sci::Position>(pdoc->Length()));
+ SetSelection(pCR->cpMin, pdoc->Length());
} else {
SetSelection(pCR->cpMin, pCR->cpMax);
}
@@ -2261,7 +2261,7 @@ void ScintillaWin::Paste() {
&putf[0], static_cast<int>(len) + 1, NULL, NULL);
}
- InsertPasteShape(&putf[0], static_cast<int>(len), pasteShape);
+ InsertPasteShape(&putf[0], len, pasteShape);
}
memUSelection.Unlock();
} else {
@@ -2276,12 +2276,12 @@ void ScintillaWin::Paste() {
if ((len == bytes) && (0 == ptr[i]))
len = i;
}
- const int ilen = static_cast<int>(len);
// In Unicode mode, convert clipboard text to UTF-8
if (IsUnicodeMode()) {
std::vector<wchar_t> uptr(len+1);
+ const int ilen = static_cast<int>(len);
const size_t ulen = ::MultiByteToWideChar(CP_ACP, 0,
ptr, ilen, &uptr[0], ilen +1);
@@ -2289,9 +2289,9 @@ void ScintillaWin::Paste() {
std::vector<char> putf(mlen+1);
UTF8FromUTF16(&uptr[0], ulen, &putf[0], mlen);
- InsertPasteShape(&putf[0], static_cast<int>(mlen), pasteShape);
+ InsertPasteShape(&putf[0], mlen, pasteShape);
} else {
- InsertPasteShape(ptr, ilen, pasteShape);
+ InsertPasteShape(ptr, len, pasteShape);
}
}
memSelection.Unlock();
@@ -2689,11 +2689,11 @@ LRESULT ScintillaWin::ImeOnReconvert(LPARAM lParam) {
// Look around: baseStart <-- (|mainStart| -- mainEnd) --> baseEnd.
const Sci::Position mainStart = sel.RangeMain().Start().Position();
const Sci::Position mainEnd = sel.RangeMain().End().Position();
- const Sci::Line curLine = static_cast<Sci::Line>(pdoc->LineFromPosition(mainStart));
+ const Sci::Line curLine = pdoc->SciLineFromPosition(mainStart);
if (curLine != pdoc->LineFromPosition(mainEnd))
return 0;
- const Sci::Position baseStart = static_cast<Sci::Position>(pdoc->LineStart(curLine));
- const Sci::Position baseEnd = static_cast<Sci::Position>(pdoc->LineEnd(curLine));
+ const Sci::Position baseStart = pdoc->LineStart(curLine);
+ const Sci::Position baseEnd = pdoc->LineEnd(curLine);
if ((baseStart == baseEnd) || (mainEnd > baseEnd))
return 0;
@@ -2753,7 +2753,7 @@ LRESULT ScintillaWin::ImeOnReconvert(LPARAM lParam) {
} else {
// Ensure docCompStart+docCompLen be not beyond lineEnd.
// since docCompLen by byte might break eol.
- Sci::Position lineEnd = static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(rBase)));
+ Sci::Position lineEnd = pdoc->LineEnd(pdoc->LineFromPosition(rBase));
Sci::Position overflow = (docCompStart + docCompLen) - lineEnd;
if (overflow > 0) {
pdoc->DeleteChars(docCompStart, docCompLen - overflow);