aboutsummaryrefslogtreecommitdiff
path: root/src/scintilla_backports/6327_95346e626cf8.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/scintilla_backports/6327_95346e626cf8.patch')
-rw-r--r--src/scintilla_backports/6327_95346e626cf8.patch1794
1 files changed, 0 insertions, 1794 deletions
diff --git a/src/scintilla_backports/6327_95346e626cf8.patch b/src/scintilla_backports/6327_95346e626cf8.patch
deleted file mode 100644
index cea1ff0d..00000000
--- a/src/scintilla_backports/6327_95346e626cf8.patch
+++ /dev/null
@@ -1,1794 +0,0 @@
-# HG changeset patch
-# User Neil <nyamatongwe@gmail.com>
-# Date 1498107131 -36000
-# Node ID 95346e626cf85a564bf2277197ab4915a4ef2932
-# Parent c15f84c11e1770cdbeeb1aaf5e88b068b5304292
-Cast between Sci_Position.h types used for lexers and Position.h types used in
-core to allow the Sci_Position.h types to widen to 64-bits.
-
-diff -r c15f84c11e17 -r 95346e626cf8 src/Document.cxx
---- a/src/Document.cxx Thu Jun 22 14:36:26 2017 +1000
-+++ b/src/Document.cxx Thu Jun 22 14:52:11 2017 +1000
-@@ -62,7 +62,7 @@
- // code looks for child lines which may trigger styling.
- performingStyle = true;
-
-- Sci::Position lengthDoc = pdoc->Length();
-+ Sci::Position lengthDoc = static_cast<Sci::Position>(pdoc->Length());
- if (end == -1)
- end = lengthDoc;
- Sci::Position len = end - start;
-@@ -302,7 +302,7 @@
- int Document::AddMark(Sci::Line line, int markerNum) {
- if (line >= 0 && line <= LinesTotal()) {
- const int prev = static_cast<LineMarkers *>(perLineData[ldMarkers])->
- AddMark(line, markerNum, LinesTotal());
-- DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
- NotifyModified(mh);
- return prev;
-@@ -319,13 +319,13 @@
- if (m & 1)
- static_cast<LineMarkers *>(perLineData[ldMarkers])->
- AddMark(line, i, LinesTotal());
-- DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
- NotifyModified(mh);
- }
-
- void Document::DeleteMark(Sci::Line line, int markerNum) {
- static_cast<LineMarkers *>(perLineData[ldMarkers])->DeleteMark(line, markerNum, false);
-- DocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGEMARKER, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
- NotifyModified(mh);
- }
-
-@@ -354,7 +354,7 @@
- }
-
- Sci_Position SCI_METHOD Document::LineStart(Sci_Position line) const {
-- return cb.LineStart(line);
-+ return cb.LineStart(static_cast<Sci::Line>(line));
- }
-
- bool Document::IsLineStartPosition(Sci::Position position) const {
-@@ -365,7 +365,7 @@
- if (line >= LinesTotal() - 1) {
- return LineStart(line + 1);
- } else {
-- Sci::Position position = LineStart(line + 1);
-+ Sci::Position position = static_cast<Sci::Position>(LineStart(line + 1));
- if (SC_CP_UTF8 == dbcsCodePage) {
- const unsigned char bytes[] = {
- static_cast<unsigned char>(cb.CharAt(position-3)),
-@@ -396,11 +396,11 @@
- }
-
- Sci_Position SCI_METHOD Document::LineFromPosition(Sci_Position pos) const {
-- return cb.LineFromPosition(pos);
-+ return cb.LineFromPosition(static_cast<Sci::Position>(pos));
- }
-
- Sci::Position Document::LineEndPosition(Sci::Position position) const {
-- return LineEnd(LineFromPosition(position));
-+ return static_cast<Sci::Position>(LineEnd(LineFromPosition(position)));
- }
-
- bool Document::IsLineEndPosition(Sci::Position position) const {
-@@ -412,9 +412,9 @@
- }
-
- Sci::Position Document::VCHomePosition(Sci::Position position) const {
-- Sci::Line line = LineFromPosition(position);
-- Sci::Position startPosition = LineStart(line);
-- const Sci::Position endLine = LineEnd(line);
-+ Sci::Line line = static_cast<Sci::Line>(LineFromPosition(position));
-+ Sci::Position startPosition = static_cast<Sci::Position>(LineStart(line));
-+ const Sci::Position endLine = static_cast<Sci::Position>(LineEnd(line));
- Sci::Position startText = startPosition;
- while (startText < endLine && (cb.CharAt(startText) == ' ' || cb.CharAt(startText) == '\t'))
- startText++;
-@@ -425,10 +425,10 @@
- }
-
- int SCI_METHOD Document::SetLevel(Sci_Position line, int level) {
-- const int prev = static_cast<LineLevels *>(perLineData[ldLevels])->SetLevel(line, level, LinesTotal());
-+ const int prev = static_cast<LineLevels *>(perLineData[ldLevels])->SetLevel(static_cast<Sci::Line>(line), level, LinesTotal());
- if (prev != level) {
- DocModification mh(SC_MOD_CHANGEFOLD | SC_MOD_CHANGEMARKER,
-- LineStart(line), 0, 0, 0, line);
-+ static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, static_cast<Sci::Line>(line));
- mh.foldLevelNow = level;
- mh.foldLevelPrev = prev;
- NotifyModified(mh);
-@@ -437,7 +437,7 @@
- }
-
- int SCI_METHOD Document::GetLevel(Sci_Position line) const {
-- return static_cast<LineLevels *>(perLineData[ldLevels])->GetLevel(line);
-+ return static_cast<LineLevels *>(perLineData[ldLevels])->GetLevel(static_cast<Sci::Line>(line));
- }
-
- void Document::ClearLevels() {
-@@ -458,7 +458,7 @@
- const Sci::Line lookLastLine = (lastLine != -1) ? std::min(LinesTotal() - 1, lastLine) : -1;
- Sci::Line lineMaxSubord = lineParent;
- while (lineMaxSubord < maxLine - 1) {
-- EnsureStyledTo(LineStart(lineMaxSubord + 2));
-+ EnsureStyledTo(static_cast<Sci::Position>(LineStart(lineMaxSubord + 2)));
- if (!IsSubordinate(level, GetLevel(lineMaxSubord + 1)))
- break;
- if ((lookLastLine != -1) && (lineMaxSubord >= lookLastLine) && !(GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG))
-@@ -583,7 +583,7 @@
- } else if (SC_CP_UTF8 == dbcsCodePage) {
- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos));
- const int widthCharBytes = UTF8BytesOfLead[leadByte];
-- Sci::Position lengthDoc = Length();
-+ Sci::Position lengthDoc = static_cast<Sci::Position>(Length());
- if ((pos + widthCharBytes) > lengthDoc)
- return lengthDoc - pos;
- else
-@@ -633,7 +633,7 @@
- if (pos <= 0)
- return 0;
- if (pos >= Length())
-- return Length();
-+ return static_cast<Sci::Position>(Length());
-
- // PLATFORM_ASSERT(pos > 0 && pos < Length());
- if (checkLineEnd && IsCrLf(pos - 1)) {
-@@ -662,7 +662,7 @@
- } else {
- // Anchor DBCS calculations at start of line because start of line can
- // not be a DBCS trail byte.
-- const Sci::Position posStartLine = LineStart(LineFromPosition(pos));
-+ const Sci::Position posStartLine = static_cast<Sci::Position>(LineStart(LineFromPosition(pos)));
- if (pos == posStartLine)
- return pos;
-
-@@ -700,7 +700,7 @@
- if (pos + increment <= 0)
- return 0;
- if (pos + increment >= Length())
-- return Length();
-+ return static_cast<Sci::Position>(Length());
-
- if (dbcsCodePage) {
- if (SC_CP_UTF8 == dbcsCodePage) {
-@@ -741,11 +741,11 @@
- int mbsize = IsDBCSLeadByte(cb.CharAt(pos)) ? 2 : 1;
- pos += mbsize;
- if (pos > Length())
-- pos = Length();
-+ pos = static_cast<Sci::Position>(Length());
- } else {
- // Anchor DBCS calculations at start of line because start of line can
- // not be a DBCS trail byte.
-- const Sci::Position posStartLine = LineStart(LineFromPosition(pos));
-+ const Sci::Position posStartLine = static_cast<Sci::Position>(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) {
-@@ -856,7 +856,7 @@
-
- // Return -1 on out-of-bounds
- Sci_Position SCI_METHOD Document::GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const {
-- Sci::Position pos = positionStart;
-+ Sci::Position pos = static_cast<Sci::Position>(positionStart);
- if (dbcsCodePage) {
- const int increment = (characterOffset > 0) ? 1 : -1;
- while (characterOffset != 0) {
-@@ -867,7 +867,7 @@
- characterOffset -= increment;
- }
- } else {
-- pos = positionStart + characterOffset;
-+ pos = static_cast<Sci::Position>(positionStart + characterOffset);
- if ((pos < 0) || (pos > Length()))
- return INVALID_POSITION;
- }
-@@ -899,7 +899,8 @@
- int character;
- int bytesInCharacter = 1;
- if (dbcsCodePage) {
-- const unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position));
-+ const unsigned char leadByte = static_cast<unsigned char>(
-+ cb.CharAt(static_cast<Sci::Position>(position)));
- if (SC_CP_UTF8 == dbcsCodePage) {
- if (UTF8IsAscii(leadByte)) {
- // Single byte character or invalid
-@@ -908,7 +909,8 @@
- 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] = static_cast<unsigned char>(
-+ cb.CharAt(static_cast<Sci::Position>(position+b)));
- const int utf8status = UTF8Classify(charBytes, widthCharBytes);
- if (utf8status & UTF8MaskInvalid) {
- // Report as singleton surrogate values which are invalid Unicode
-@@ -921,13 +923,14 @@
- } else {
- if (IsDBCSLeadByte(leadByte)) {
- bytesInCharacter = 2;
-- character = (leadByte << 8) | static_cast<unsigned char>(cb.CharAt(position+1));
-+ character = (leadByte << 8) | static_cast<unsigned char>(
-+ cb.CharAt(static_cast<Sci::Position>(position+1)));
- } else {
- character = leadByte;
- }
- }
- } else {
-- character = cb.CharAt(position);
-+ character = cb.CharAt(static_cast<Sci::Position>(position));
- }
- if (pWidth) {
- *pWidth = bytesInCharacter;
-@@ -1137,8 +1140,8 @@
-
- int SCI_METHOD Document::AddData(char *data, Sci_Position length) {
- try {
-- Sci::Position position = Length();
-- InsertString(position, data, length);
-+ Sci::Position position = static_cast<Sci::Position>(Length());
-+ InsertString(position, data, static_cast<Sci::Position>(length));
- } catch (std::bad_alloc &) {
- return SC_STATUS_BADALLOC;
- } catch (...) {
-@@ -1335,8 +1338,8 @@
- int SCI_METHOD Document::GetLineIndentation(Sci_Position line) {
- int indent = 0;
- if ((line >= 0) && (line < LinesTotal())) {
-- const Sci::Position lineStart = LineStart(line);
-- const Sci::Position length = Length();
-+ const Sci::Position lineStart = static_cast<Sci::Position>(LineStart(line));
-+ const Sci::Position length = static_cast<Sci::Position>(Length());
- for (Sci::Position i = lineStart; i < length; i++) {
- const char ch = cb.CharAt(i);
- if (ch == ' ')
-@@ -1356,7 +1359,7 @@
- indent = 0;
- if (indent != indentOfLine) {
- std::string linebuf = CreateIndentation(indent, tabInChars, !useTabs);
-- Sci::Position thisLineStart = LineStart(line);
-+ Sci::Position thisLineStart = static_cast<Sci::Position>(LineStart(line));
- Sci::Position indentPos = GetLineIndentPosition(line);
- UndoGroup ug(this);
- DeleteChars(thisLineStart, indentPos - thisLineStart);
-@@ -1370,8 +1373,8 @@
- Sci::Position Document::GetLineIndentPosition(Sci::Line line) const {
- if (line < 0)
- return 0;
-- Sci::Position pos = LineStart(line);
-- const Sci::Position length = Length();
-+ Sci::Position pos = static_cast<Sci::Position>(LineStart(line));
-+ const Sci::Position length = static_cast<Sci::Position>(Length());
- while ((pos < length) && IsSpaceOrTab(cb.CharAt(pos))) {
- pos++;
- }
-@@ -1380,9 +1383,9 @@
-
- Sci::Position Document::GetColumn(Sci::Position pos) {
- Sci::Position column = 0;
-- Sci::Line line = LineFromPosition(pos);
-+ Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos));
- if ((line >= 0) && (line < LinesTotal())) {
-- for (Sci::Position i = LineStart(line); i < pos;) {
-+ for (Sci::Position i = static_cast<Sci::Position>(LineStart(line)); i < pos;) {
- const char ch = cb.CharAt(i);
- if (ch == '\t') {
- column = NextTab(column, tabInChars);
-@@ -1430,7 +1433,7 @@
- }
-
- Sci::Position Document::FindColumn(Sci::Line line, Sci::Position column) {
-- Sci::Position position = LineStart(line);
-+ Sci::Position position = static_cast<Sci::Position>(LineStart(line));
- if ((line >= 0) && (line < LinesTotal())) {
- Sci::Position columnCurrent = 0;
- while ((columnCurrent < column) && (position < Length())) {
-@@ -1530,8 +1533,8 @@
- }
-
- bool Document::IsWhiteLine(Sci::Line line) const {
-- Sci::Position currentChar = LineStart(line);
-- const Sci::Position endLine = LineEnd(line);
-+ Sci::Position currentChar = static_cast<Sci::Position>(LineStart(line));
-+ const Sci::Position endLine = static_cast<Sci::Position>(LineEnd(line));
- while (currentChar < endLine) {
- if (cb.CharAt(currentChar) != ' ' && cb.CharAt(currentChar) != '\t') {
- return false;
-@@ -1542,7 +1545,7 @@
- }
-
- Sci::Position Document::ParaUp(Sci::Position pos) const {
-- Sci::Line line = LineFromPosition(pos);
-+ Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos));
- line--;
- while (line >= 0 && IsWhiteLine(line)) { // skip empty lines
- line--;
-@@ -1551,11 +1554,11 @@
- line--;
- }
- line++;
-- return LineStart(line);
-+ return static_cast<Sci::Position>(LineStart(line));
- }
-
- Sci::Position Document::ParaDown(Sci::Position pos) const {
-- Sci::Line line = LineFromPosition(pos);
-+ Sci::Line line = static_cast<Sci::Line>(LineFromPosition(pos));
- while (line < LinesTotal() && !IsWhiteLine(line)) { // skip non-empty lines
- line++;
- }
-@@ -1563,9 +1566,9 @@
- line++;
- }
- if (line < LinesTotal())
-- return LineStart(line);
-+ return static_cast<Sci::Position>(LineStart(line));
- else // end of a document
-- return LineEnd(line-1);
-+ return static_cast<Sci::Position>(LineEnd(line-1));
- }
-
- bool Document::IsASCIIWordByte(unsigned char ch) const {
-@@ -2040,12 +2043,12 @@
- } else {
- enteredStyling++;
- Sci::Position prevEndStyled = endStyled;
-- if (cb.SetStyleFor(endStyled, length, style)) {
-+ if (cb.SetStyleFor(static_cast<Sci::Position>(endStyled), static_cast<Sci::Position>(length), style)) {
- DocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,
-- prevEndStyled, length);
-+ prevEndStyled, static_cast<Sci::Position>(length));
- NotifyModified(mh);
- }
-- endStyled += length;
-+ endStyled += static_cast<Sci::Position>(length);
- enteredStyling--;
- return true;
- }
-@@ -2083,8 +2086,8 @@
- if ((enteredStyling == 0) && (pos > GetEndStyled())) {
- IncrementStyleClock();
- if (pli && !pli->UseContainerLexing()) {
-- Sci::Line lineEndStyled = LineFromPosition(GetEndStyled());
-- Sci::Position endStyledTo = LineStart(lineEndStyled);
-+ Sci::Line lineEndStyled = static_cast<Sci::Line>(LineFromPosition(GetEndStyled()));
-+ Sci::Position endStyledTo = static_cast<Sci::Position>(LineStart(lineEndStyled));
- pli->Colourise(endStyledTo, pos);
- } else {
- // Ask the watchers to style, and stop as soon as one responds.
-@@ -2106,11 +2109,11 @@
- // Most recent value contributes 25% to smoothed value.
- const double alpha = 0.25;
-
-- const Sci::Line lineFirst = LineFromPosition(GetEndStyled());
-+ const Sci::Line lineFirst = static_cast<Sci::Line>(LineFromPosition(GetEndStyled()));
- ElapsedTime etStyling;
- EnsureStyledTo(pos);
- const double durationStyling = etStyling.Duration();
-- const Sci::Line lineLast = LineFromPosition(GetEndStyled());
-+ const Sci::Line lineLast = static_cast<Sci::Line>(LineFromPosition(GetEndStyled()));
- if (lineLast >= lineFirst + 8) {
- // Only adjust for styling multiple lines to avoid instability
- const double durationOneLine = durationStyling / (lineLast - lineFirst);
-@@ -2139,16 +2142,17 @@
- }
-
- int SCI_METHOD Document::SetLineState(Sci_Position line, int state) {
-- const int statePrevious = static_cast<LineState *>(perLineData[ldState])->SetLineState(line, state);
-+ const int statePrevious = static_cast<LineState *>(perLineData[ldState])->SetLineState(static_cast<Sci::Line>(line), state);
- if (state != statePrevious) {
-- DocModification mh(SC_MOD_CHANGELINESTATE, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGELINESTATE, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0,
-+ static_cast<Sci::Line>(line));
- NotifyModified(mh);
- }
- return statePrevious;
- }
-
- int SCI_METHOD Document::GetLineState(Sci_Position line) const {
-- return static_cast<LineState *>(perLineData[ldState])->GetLineState(line);
-+ return static_cast<LineState *>(perLineData[ldState])->GetLineState(static_cast<Sci::Line>(line));
- }
-
- Sci::Line Document::GetMaxLineState() const {
-@@ -2156,7 +2160,8 @@
- }
-
- void SCI_METHOD Document::ChangeLexerState(Sci_Position start, Sci_Position end) {
-- DocModification mh(SC_MOD_LEXERSTATE, start, end-start, 0, 0, 0);
-+ DocModification mh(SC_MOD_LEXERSTATE, static_cast<Sci::Position>(start),
-+ static_cast<Sci::Position>(end-start), 0, 0, 0);
- NotifyModified(mh);
- }
-
-@@ -2168,18 +2173,21 @@
-
- void Document::MarginSetText(Sci::Line line, const char *text) {
- static_cast<LineAnnotation *>(perLineData[ldMargin])->SetText(line, text);
-- DocModification mh(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)),
-+ 0, 0, 0, line);
- NotifyModified(mh);
- }
-
- void Document::MarginSetStyle(Sci::Line line, int style) {
- static_cast<LineAnnotation *>(perLineData[ldMargin])->SetStyle(line, style);
-- NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line));
-+ NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)),
-+ 0, 0, 0, line));
- }
-
- void Document::MarginSetStyles(Sci::Line line, const unsigned char *styles) {
- static_cast<LineAnnotation *>(perLineData[ldMargin])->SetStyles(line, styles);
-- NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line));
-+ NotifyModified(DocModification(SC_MOD_CHANGEMARGIN, static_cast<Sci::Position>(LineStart(line)),
-+ 0, 0, 0, line));
- }
-
- void Document::MarginClearAll() {
-@@ -2201,7 +2209,8 @@
- const Sci::Line linesBefore = AnnotationLines(line);
- Annotations()->SetText(line, text);
- const int linesAfter = AnnotationLines(line);
-- DocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGEANNOTATION, static_cast<Sci::Position>(LineStart(line)),
-+ 0, 0, 0, line);
- mh.annotationLinesAdded = linesAfter - linesBefore;
- NotifyModified(mh);
- }
-@@ -2209,7 +2218,7 @@
-
- void Document::AnnotationSetStyle(Sci::Line line, int style) {
- static_cast<LineAnnotation *>(perLineData[ldAnnotation])->SetStyle(line, style);
-- DocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line), 0, 0, 0, line);
-+ DocModification mh(SC_MOD_CHANGEANNOTATION, static_cast<Sci::Position>(LineStart(line)), 0, 0, 0, line);
- NotifyModified(mh);
- }
-
-@@ -2240,9 +2249,11 @@
- }
-
- void SCI_METHOD Document::DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) {
-- if (decorations.FillRange(position, value, fillLength)) {
-+ Sci::Position sciPosition = static_cast<Sci::Position>(position);
-+ Sci::Position sciFillLength = static_cast<Sci::Position>(fillLength);
-+ if (decorations.FillRange(sciPosition, value, sciFillLength)) {
- DocModification mh(SC_MOD_CHANGEINDICATOR | SC_PERFORMED_USER,
-- position, fillLength);
-+ sciPosition, sciFillLength);
- NotifyModified(mh);
- }
- }
-@@ -2387,7 +2398,7 @@
-
- Sci::Position Document::WordPartRight(Sci::Position pos) const {
- CharacterExtracted ceStart = CharacterAfter(pos);
-- const Sci::Position length = Length();
-+ const Sci::Position length = static_cast<Sci::Position>(Length());
- if (IsWordPartSeparator(ceStart.character)) {
- while (pos < length && IsWordPartSeparator(CharacterAfter(pos).character))
- pos += CharacterAfter(pos).widthBytes;
-@@ -2538,25 +2549,25 @@
- startPos = doc->MovePositionOutsideChar(minPos, 1, false);
- endPos = doc->MovePositionOutsideChar(maxPos, 1, false);
-
-- lineRangeStart = doc->LineFromPosition(startPos);
-- lineRangeEnd = doc->LineFromPosition(endPos);
-+ lineRangeStart = static_cast<Sci::Line>(doc->LineFromPosition(startPos));
-+ lineRangeEnd = static_cast<Sci::Line>(doc->LineFromPosition(endPos));
- if ((increment == 1) &&
- (startPos >= doc->LineEnd(lineRangeStart)) &&
- (lineRangeStart < lineRangeEnd)) {
- // the start position is at end of line or between line end characters.
- lineRangeStart++;
-- startPos = doc->LineStart(lineRangeStart);
-+ startPos = static_cast<Sci::Position>(doc->LineStart(lineRangeStart));
- } else if ((increment == -1) &&
- (startPos <= doc->LineStart(lineRangeStart)) &&
- (lineRangeStart > lineRangeEnd)) {
- // the start position is at beginning of line.
- lineRangeStart--;
-- startPos = doc->LineEnd(lineRangeStart);
-+ startPos = static_cast<Sci::Position>(doc->LineEnd(lineRangeStart));
- }
- lineRangeBreak = lineRangeEnd + increment;
- }
- Range LineRange(Sci::Line line) const {
-- Range range(doc->LineStart(line), doc->LineEnd(line));
-+ Range range(static_cast<Sci::Position>(doc->LineStart(line)), static_cast<Sci::Position>(doc->LineEnd(line)));
- if (increment == 1) {
- if (line == lineRangeStart)
- range.start = startPos;
-@@ -2976,8 +2987,8 @@
- const char searchEnd = s[*length - 1];
- const char searchEndPrev = (*length > 1) ? s[*length - 2] : '\0';
- for (Sci::Line line = resr.lineRangeStart; line != resr.lineRangeBreak; line += resr.increment) {
-- Sci::Position startOfLine = doc->LineStart(line);
-- Sci::Position endOfLine = doc->LineEnd(line);
-+ Sci::Position startOfLine = static_cast<Sci::Position>(doc->LineStart(line));
-+ Sci::Position endOfLine = static_cast<Sci::Position>(doc->LineEnd(line));
- if (resr.increment == 1) {
- if (line == resr.lineRangeStart) {
- if ((resr.startPos != startOfLine) && (s[0] == '^'))
-@@ -3034,7 +3045,7 @@
-
- const char *BuiltinRegex::SubstituteByPosition(Document *doc, const char *text, Sci::Position *length) {
- substituted.clear();
-- DocumentIndexer di(doc, doc->Length());
-+ DocumentIndexer di(doc, static_cast<Sci::Position>(doc->Length()));
- search.GrabMatches(di);
- for (int j = 0; j < *length; j++) {
- if (text[j] == '\\') {
-diff -r c15f84c11e17 -r 95346e626cf8 src/Document.h
---- a/src/Document.h Thu Jun 22 14:36:26 2017 +1000
-+++ b/src/Document.h Thu Jun 22 14:52:11 2017 +1000
-@@ -360,10 +360,10 @@
-
- char CharAt(Sci::Position position) const { return cb.CharAt(position); }
- void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const {
-- cb.GetCharRange(buffer, position, lengthRetrieve);
-+ cb.GetCharRange(buffer, static_cast<Sci::Position>(position), static_cast<Sci::Position>(lengthRetrieve));
- }
-- char SCI_METHOD StyleAt(Sci_Position position) const { return cb.StyleAt(position); }
-- int StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(position)); }
-+ char SCI_METHOD StyleAt(Sci_Position position) const { 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))); }
- void GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const {
- cb.GetStyleRange(buffer, position, lengthRetrieve);
- }
-diff -r c15f84c11e17 -r 95346e626cf8 src/EditView.cxx
---- a/src/EditView.cxx Thu Jun 22 14:36:26 2017 +1000
-+++ b/src/EditView.cxx Thu Jun 22 14:52:11 2017 +1000
-@@ -339,10 +339,10 @@
- }
-
- LineLayout *EditView::RetrieveLineLayout(Sci::Line lineNumber, const EditModel &model) {
-- Sci::Position posLineStart = model.pdoc->LineStart(lineNumber);
-- Sci::Position posLineEnd = model.pdoc->LineStart(lineNumber + 1);
-+ Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineNumber));
-+ Sci::Position posLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(lineNumber + 1));
- PLATFORM_ASSERT(posLineEnd >= posLineStart);
-- Sci::Line lineCaret = model.pdoc->LineFromPosition(model.sel.MainCaret());
-+ Sci::Line lineCaret = static_cast<Sci::Line>(model.pdoc->LineFromPosition(model.sel.MainCaret()));
- return llc.Retrieve(lineNumber, lineCaret,
- posLineEnd - posLineStart, model.pdoc->GetStyleClock(),
- model.LinesOnScreen() + 1, model.pdoc->LinesTotal());
-@@ -359,8 +359,8 @@
-
- PLATFORM_ASSERT(line < model.pdoc->LinesTotal());
- PLATFORM_ASSERT(ll->chars != NULL);
-- Sci::Position posLineStart = model.pdoc->LineStart(line);
-- Sci::Position posLineEnd = model.pdoc->LineStart(line + 1);
-+ Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
-+ Sci::Position posLineEnd = static_cast<Sci::Position>(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;
-@@ -368,7 +368,7 @@
- if (ll->validity == LineLayout::llCheckTextAndStyle) {
- Sci::Position lineLength = posLineEnd - posLineStart;
- if (!vstyle.viewEOL) {
-- lineLength = model.pdoc->LineEnd(line) - posLineStart;
-+ lineLength = static_cast<Sci::Position>(model.pdoc->LineEnd(line)) - posLineStart;
- }
- if (lineLength == ll->numCharsInLine) {
- // See if chars, styles, indicators, are all the same
-@@ -427,7 +427,7 @@
- const int lineLength = posLineEnd - posLineStart;
- model.pdoc->GetCharRange(ll->chars, posLineStart, lineLength);
- model.pdoc->GetStyleRange(ll->styles, posLineStart, lineLength);
-- const int numCharsBeforeEOL = model.pdoc->LineEnd(line) - posLineStart;
-+ const int numCharsBeforeEOL = static_cast<Sci::Position>(model.pdoc->LineEnd(line)) - posLineStart;
- const int numCharsInLine = (vstyle.viewEOL) ? lineLength : numCharsBeforeEOL;
- for (Sci::Position styleInLine = 0; styleInLine < numCharsInLine; styleInLine++) {
- const unsigned char styleByte = ll->styles[styleInLine];
-@@ -598,12 +598,12 @@
- Point pt;
- if (pos.Position() == INVALID_POSITION)
- return pt;
-- Sci::Line lineDoc = model.pdoc->LineFromPosition(pos.Position());
-- Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
-+ Sci::Line lineDoc = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos.Position()));
-+ Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
- if ((pe & peLineEnd) && (lineDoc > 0) && (pos.Position() == posLineStart)) {
- // Want point at end of first line
- lineDoc--;
-- posLineStart = model.pdoc->LineStart(lineDoc);
-+ posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
- }
- const Sci::Line lineVisible = model.cs.DisplayFromDoc(lineDoc);
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
-@@ -624,7 +624,7 @@
- return rangeSubLine;
- }
- const Sci::Line lineDoc = model.cs.DocFromDisplay(lineVisible);
-- const Sci::Position positionLineStart = model.pdoc->LineStart(lineDoc);
-+ const Sci::Position positionLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
- if (surface && ll) {
- LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
-@@ -633,7 +633,7 @@
- if (subLine < ll->lines) {
- rangeSubLine = ll->SubLineRange(subLine);
- if (subLine == ll->lines-1) {
-- rangeSubLine.end = model.pdoc->LineStart(lineDoc + 1) -
-+ rangeSubLine.end = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1)) -
- positionLineStart;
- }
- }
-@@ -652,8 +652,9 @@
- if (canReturnInvalid && (lineDoc < 0))
- return SelectionPosition(INVALID_POSITION);
- if (lineDoc >= model.pdoc->LinesTotal())
-- return SelectionPosition(canReturnInvalid ? INVALID_POSITION : model.pdoc->Length());
-- const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
-+ return SelectionPosition(canReturnInvalid ? INVALID_POSITION :
-+ static_cast<Sci::Position>(model.pdoc->Length()));
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc));
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
- if (surface && ll) {
- LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
-@@ -696,7 +697,7 @@
- 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 = model.pdoc->LineStart(lineDoc);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(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];
-@@ -713,12 +714,12 @@
- }
-
- Sci::Line EditView::DisplayFromPosition(Surface *surface, const EditModel &model, Sci::Position pos, const ViewStyle &vs) {
-- const Sci::Line lineDoc = model.pdoc->LineFromPosition(pos);
-+ const Sci::Line lineDoc = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos));
- Sci::Line lineDisplay = model.cs.DisplayFromDoc(lineDoc);
- AutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));
- if (surface && ll) {
- LayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);
-- const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(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++) {
-@@ -731,11 +732,11 @@
- }
-
- Sci::Position EditView::StartEndDisplayLine(Surface *surface, const EditModel &model, Sci::Position pos, bool start, const ViewStyle &vs) {
-- const Sci::Line line = model.pdoc->LineFromPosition(pos);
-+ const Sci::Line line = static_cast<Sci::Line>(model.pdoc->LineFromPosition(pos));
- AutoLineLayout ll(llc, RetrieveLineLayout(line, model));
- Sci::Position posRet = INVALID_POSITION;
- if (surface && ll) {
-- const Sci::Position posLineStart = model.pdoc->LineStart(line);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
- LayoutLine(model, line, surface, vs, ll, model.wrapWidth);
- const Sci::Position posInLine = pos - posLineStart;
- if (posInLine <= ll->maxLineLength) {
-@@ -862,14 +863,14 @@
- PRectangle rcLine, Sci::Line line, Sci::Position lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,
- ColourOptional background) {
-
-- const Sci::Position posLineStart = model.pdoc->LineStart(line);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(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(model.pdoc->LineEnd(line)) * spaceWidth;
-+ virtualSpace = model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line))) * spaceWidth;
- }
- const XYPOSITION xEol = static_cast<XYPOSITION>(ll->positions[lineEnd] - subLineStart);
-
-@@ -879,7 +880,9 @@
- 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))) {
-- SelectionSegment virtualSpaceRange(SelectionPosition(model.pdoc->LineEnd(line)), SelectionPosition(model.pdoc->LineEnd(line), model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line))));
-+ 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)))));
- 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) {
-@@ -902,7 +905,7 @@
- int eolInSelection = 0;
- int alpha = SC_ALPHA_NOALPHA;
- if (!hideSelection) {
-- Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1);
-+ Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1));
- eolInSelection = (lastSubLine == true) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;
- alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
- }
-@@ -1039,7 +1042,7 @@
- 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 = model.pdoc->LineStart(line);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
- const Sci::Position lineStart = ll->LineStart(subLine);
- const Sci::Position posLineEnd = posLineStart + lineEnd;
-
-@@ -1109,13 +1112,14 @@
- int eolInSelection = 0;
- int alpha = SC_ALPHA_NOALPHA;
- if (!hideSelection) {
-- Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1);
-+ Sci::Position posAfterLineEnd = static_cast<Sci::Position>(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;
-- XYPOSITION virtualSpace = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)) * spaceWidth;
-+ XYPOSITION virtualSpace = model.sel.VirtualSpaceFor(
-+ static_cast<Sci::Position>(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 +1320,7 @@
- const bool drawDrag = model.posDrag.IsValid();
- if (hideSelection && !drawDrag)
- return;
-- const Sci::Position posLineStart = model.pdoc->LineStart(lineDoc);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(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 +1554,12 @@
- 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 = model.pdoc->LineStart(line);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(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(model.pdoc->LineEnd(line));
-+ virtualSpaces = model.sel.VirtualSpaceFor(static_cast<Sci::Position>(model.pdoc->LineEnd(line)));
- }
- const SelectionPosition posStart(posLineStart + lineRange.start);
- const SelectionPosition posEnd(posLineStart + lineRange.end, virtualSpaces);
-@@ -1815,7 +1819,7 @@
- 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 = model.pdoc->LineStart(line);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
- int indentSpace = model.pdoc->GetLineIndentation(line);
- int xStartText = static_cast<int>(ll->positions[model.pdoc->GetLineIndentPosition(line) - posLineStart]);
-
-@@ -1876,7 +1880,7 @@
- // 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 = model.pdoc->LineStart(line);
-+ const Sci::Position posLineStart = static_cast<Sci::Position>(model.pdoc->LineStart(line));
-
- const Range lineRange = ll->SubLineRange(subLine);
- const XYACCUMULATOR subLineStart = ll->positions[lineRange.start];
-@@ -1990,7 +1994,7 @@
- SelectionPosition posCaret = model.sel.RangeMain().caret;
- if (model.posDrag.IsValid())
- posCaret = model.posDrag;
-- const Sci::Line lineCaret = model.pdoc->LineFromPosition(posCaret.Position());
-+ const Sci::Line lineCaret = static_cast<Sci::Line>(model.pdoc->LineFromPosition(posCaret.Position()));
-
- PRectangle rcTextArea = rcClient;
- if (vsDraw.marginInside) {
-@@ -2060,7 +2064,8 @@
- rcLine.top = static_cast<XYPOSITION>(ypos);
- rcLine.bottom = static_cast<XYPOSITION>(ypos + vsDraw.lineHeight);
-
-- Range rangeLine(model.pdoc->LineStart(lineDoc), model.pdoc->LineStart(lineDoc + 1));
-+ Range rangeLine(static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc)),
-+ static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1)));
-
- // Highlight the current braces if any
- ll->SetBracesHighlight(rangeLine, model.braces, static_cast<char>(model.bracesMatchStyle),
-@@ -2149,7 +2154,7 @@
- int eolInSelection = 0;
- int alpha = SC_ALPHA_NOALPHA;
- if (!hideSelection) {
-- Sci::Position posAfterLineEnd = model.pdoc->LineStart(line + 1);
-+ Sci::Position posAfterLineEnd = static_cast<Sci::Position>(model.pdoc->LineStart(line + 1));
- eolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;
- alpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;
- }
-@@ -2258,19 +2263,21 @@
- vsPrint.Refresh(*surfaceMeasure, model.pdoc->tabInChars); // Recalculate fixedColumnWidth
- }
-
-- Sci::Line linePrintStart = model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMin));
-+ Sci::Line linePrintStart = static_cast<Sci::Line>(
-+ model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMin)));
- Sci::Line linePrintLast = linePrintStart + (pfr->rc.bottom - pfr->rc.top) / vsPrint.lineHeight - 1;
- if (linePrintLast < linePrintStart)
- linePrintLast = linePrintStart;
-- Sci::Line linePrintMax = model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMax));
-+ Sci::Line linePrintMax = static_cast<Sci::Line>(
-+ model.pdoc->LineFromPosition(static_cast<int>(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 = model.pdoc->Length();
-+ Sci::Position endPosPrint = static_cast<Sci::Position>(model.pdoc->Length());
- if (linePrintLast < model.pdoc->LinesTotal())
-- endPosPrint = model.pdoc->LineStart(linePrintLast + 1);
-+ endPosPrint = static_cast<Sci::Position>(model.pdoc->LineStart(linePrintLast + 1));
-
- // Ensure we are styled to where we are formatting.
- model.pdoc->EnsureStyledTo(endPosPrint);
-@@ -2296,7 +2303,7 @@
-
- // Copy this line and its styles from the document into local arrays
- // and determine the x position at which each character starts.
-- LineLayout ll(model.pdoc->LineStart(lineDoc + 1) - model.pdoc->LineStart(lineDoc) + 1);
-+ LineLayout ll(static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1) - model.pdoc->LineStart(lineDoc) + 1));
- LayoutLine(model, lineDoc, surfaceMeasure, vsPrint, &ll, widthPrint);
-
- ll.containsCaret = false;
-@@ -2311,7 +2318,8 @@
- // to start printing from to ensure a particular position is on the first
- // line of the page.
- if (visibleLine == 0) {
-- const Sci::Position startWithinLine = nPrintPos - model.pdoc->LineStart(lineDoc);
-+ const Sci::Position startWithinLine = nPrintPos -
-+ static_cast<Sci::Position>(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;
-@@ -2355,7 +2363,7 @@
- }
- visibleLine++;
- if (iwl == ll.lines - 1)
-- nPrintPos = model.pdoc->LineStart(lineDoc + 1);
-+ nPrintPos = static_cast<Sci::Position>(model.pdoc->LineStart(lineDoc + 1));
- else
- nPrintPos += ll.LineStart(iwl + 1) - ll.LineStart(iwl);
- }
-diff -r c15f84c11e17 -r 95346e626cf8 src/Editor.cxx
---- a/src/Editor.cxx Thu Jun 22 14:36:26 2017 +1000
-+++ b/src/Editor.cxx Thu Jun 22 14:52:11 2017 +1000
-@@ -357,7 +357,7 @@
- if (sp.Position() < 0) {
- return SelectionPosition(0);
- } else if (sp.Position() > pdoc->Length()) {
-- return SelectionPosition(pdoc->Length());
-+ return SelectionPosition(static_cast<Sci::Position>(pdoc->Length()));
- } else {
- // If not at end of line then set offset to 0
- if (!pdoc->IsLineEndPosition(sp.Position()))
-@@ -418,7 +418,7 @@
- SelectionPosition Editor::SPositionFromLineX(Sci::Line lineDoc, int x) {
- RefreshStyleData();
- if (lineDoc >= pdoc->LinesTotal())
-- return SelectionPosition(pdoc->Length());
-+ return SelectionPosition(static_cast<Sci::Position>(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);
-@@ -437,7 +437,7 @@
- topLine = topLineNew;
- ContainerNeedsUpdate(SC_UPDATE_V_SCROLL);
- }
-- posTopLine = pdoc->LineStart(cs.DocFromDisplay(topLine));
-+ posTopLine = static_cast<Sci::Position>(pdoc->LineStart(cs.DocFromDisplay(topLine)));
- }
-
- /**
-@@ -500,7 +500,7 @@
- rcMarkers.right = rcMarkers.left + vs.fixedColumnWidth;
- }
- if (line != -1) {
-- PRectangle rcLine = RectangleFromRange(Range(pdoc->LineStart(line)), 0);
-+ PRectangle rcLine = RectangleFromRange(Range(static_cast<Sci::Position>(pdoc->LineStart(line))), 0);
-
- // Inflate line rectangle if there are image markers with height larger than line height
- if (vs.largestMarkerHeight > vs.lineHeight) {
-@@ -529,8 +529,10 @@
- }
-
- PRectangle Editor::RectangleFromRange(Range r, int overlap) {
-- const Sci::Line minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(r.First()));
-- const Sci::Line maxLine = cs.DisplayLastFromDoc(pdoc->LineFromPosition(r.Last()));
-+ const Sci::Line minLine = cs.DisplayFromDoc(
-+ static_cast<Sci::Line>(pdoc->LineFromPosition(r.First())));
-+ const Sci::Line maxLine = cs.DisplayLastFromDoc(
-+ static_cast<Sci::Line>(pdoc->LineFromPosition(r.Last())));
- const PRectangle rcClientDrawing = GetClientDrawingRectangle();
- PRectangle rc;
- const int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0;
-@@ -572,8 +574,10 @@
- if (sel.selType == Selection::selThin) {
- xCaret = xAnchor;
- }
-- const Sci::Line lineAnchorRect = pdoc->LineFromPosition(sel.Rectangular().anchor.Position());
-- const Sci::Line lineCaret = pdoc->LineFromPosition(sel.Rectangular().caret.Position());
-+ 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 int increment = (lineCaret > lineAnchorRect) ? 1 : -1;
- for (Sci::Line line=lineAnchorRect; line != lineCaret+increment; line += increment) {
- SelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor));
-@@ -626,16 +630,20 @@
- void Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_) {
- currentPos_ = ClampPositionIntoDocument(currentPos_);
- anchor_ = ClampPositionIntoDocument(anchor_);
-- Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position());
-+ Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position()));
- /* For Line selection - ensure the anchor and caret are always
- at the beginning and end of the region lines. */
- if (sel.selType == Selection::selLines) {
- if (currentPos_ > anchor_) {
-- anchor_ = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position())));
-- currentPos_ = SelectionPosition(pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position())));
-+ anchor_ = SelectionPosition(static_cast<Sci::Position>(
-+ pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position()))));
-+ currentPos_ = SelectionPosition(static_cast<Sci::Position>(
-+ pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position()))));
- } else {
-- currentPos_ = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position())));
-- anchor_ = SelectionPosition(pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position())));
-+ currentPos_ = SelectionPosition(static_cast<Sci::Position>(
-+ pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position()))));
-+ anchor_ = SelectionPosition(static_cast<Sci::Position>(
-+ pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position()))));
- }
- }
- SelectionRange rangeNew(currentPos_, anchor_);
-@@ -660,7 +668,7 @@
- // Just move the caret on the main selection
- void Editor::SetSelection(SelectionPosition currentPos_) {
- currentPos_ = ClampPositionIntoDocument(currentPos_);
-- Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position());
-+ Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(currentPos_.Position()));
- if (sel.Count() > 1 || !(sel.RangeMain().caret == currentPos_)) {
- InvalidateSelection(SelectionRange(currentPos_));
- }
-@@ -686,7 +694,8 @@
- }
-
- void Editor::SetEmptySelection(SelectionPosition currentPos_) {
-- Sci::Line currentLine = pdoc->LineFromPosition(currentPos_.Position());
-+ Sci::Line currentLine = static_cast<Sci::Line>(
-+ pdoc->LineFromPosition(currentPos_.Position()));
- SelectionRange rangeNew(ClampPositionIntoDocument(currentPos_));
- if (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) {
- InvalidateSelection(rangeNew);
-@@ -815,7 +824,8 @@
- }
-
- void Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible) {
-- const Sci::Line currentLine = pdoc->LineFromPosition(newPos.Position());
-+ const Sci::Line currentLine = static_cast<Sci::Line>(
-+ pdoc->LineFromPosition(newPos.Position()));
- if (ensureVisible) {
- // In case in need of wrapping to ensure DisplayFromDoc works.
- if (currentLine >= wrapPending.start) {
-@@ -884,7 +894,7 @@
- SelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveDir) {
- pos = ClampPositionIntoDocument(pos);
- pos = MovePositionOutsideChar(pos, moveDir);
-- Sci::Line lineDoc = pdoc->LineFromPosition(pos.Position());
-+ Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(pos.Position()));
- if (cs.GetVisible(lineDoc)) {
- return pos;
- } else {
-@@ -892,10 +902,12 @@
- if (moveDir > 0) {
- // lineDisplay is already line before fold as lines in fold use display line of line after fold
- lineDisplay = Sci::clamp(lineDisplay, 0, cs.LinesDisplayed());
-- return SelectionPosition(pdoc->LineStart(cs.DocFromDisplay(lineDisplay)));
-+ return SelectionPosition(static_cast<Sci::Position>(
-+ pdoc->LineStart(cs.DocFromDisplay(lineDisplay))));
- } else {
- lineDisplay = Sci::clamp(lineDisplay - 1, 0, cs.LinesDisplayed());
-- return SelectionPosition(pdoc->LineEnd(cs.DocFromDisplay(lineDisplay)));
-+ return SelectionPosition(static_cast<Sci::Position>(
-+ pdoc->LineEnd(cs.DocFromDisplay(lineDisplay))));
- }
- }
- }
-@@ -965,7 +977,8 @@
- }
-
- void Editor::VerticalCentreCaret() {
-- const Sci::Line lineDoc = pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret());
-+ const Sci::Line lineDoc = static_cast<Sci::Line>(
-+ pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret()));
- const Sci::Line lineDisplay = cs.DisplayFromDoc(lineDoc);
- const Sci::Line newTop = lineDisplay - (LinesOnScreen() / 2);
- if (topLine != newTop) {
-@@ -984,19 +997,19 @@
-
- // if selection doesn't start at the beginning of the line, set the new start
- Sci::Position selectionStart = SelectionStart().Position();
-- const Sci::Line startLine = pdoc->LineFromPosition(selectionStart);
-- const Sci::Position beginningOfStartLine = pdoc->LineStart(startLine);
-+ const Sci::Line startLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionStart));
-+ const Sci::Position beginningOfStartLine = static_cast<Sci::Position>(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 = pdoc->LineFromPosition(selectionEnd);
-- const Sci::Position beginningOfEndLine = pdoc->LineStart(endLine);
-+ const Sci::Line endLine = static_cast<Sci::Line>(pdoc->LineFromPosition(selectionEnd));
-+ const Sci::Position beginningOfEndLine = static_cast<Sci::Position>(pdoc->LineStart(endLine));
- bool appendEol = false;
- if (selectionEnd > beginningOfEndLine
- || selectionStart == selectionEnd) {
-- selectionEnd = pdoc->LineStart(endLine + 1);
-+ selectionEnd = static_cast<Sci::Position>(pdoc->LineStart(endLine + 1));
- appendEol = (selectionEnd == pdoc->Length() && pdoc->LineFromPosition(selectionEnd) == endLine);
- }
-
-@@ -1031,7 +1044,7 @@
-
- const char *eol = StringFromEOLMode(pdoc->eolMode);
- if (currentLine + lineDelta >= pdoc->LinesTotal())
-- pdoc->InsertString(pdoc->Length(), eol, istrlen(eol));
-+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), eol, istrlen(eol));
- GoToLine(currentLine + lineDelta);
-
- selectionLength = pdoc->InsertString(CurrentPosition(), selectedText.Data(), selectionLength);
-@@ -1521,7 +1534,7 @@
- lineToWrapEnd = std::min(lineToWrapEnd, lineEndNeedWrap);
-
- // Ensure all lines being wrapped are styled.
-- pdoc->EnsureStyledTo(pdoc->LineStart(lineToWrapEnd));
-+ pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->LineStart(lineToWrapEnd)));
-
- if (lineToWrap < lineToWrapEnd) {
-
-@@ -1597,15 +1610,15 @@
- const PRectangle rcText = GetTextRectangle();
- pixelWidth = static_cast<int>(rcText.Width());
- }
-- Sci::Line lineStart = pdoc->LineFromPosition(targetStart);
-- Sci::Line lineEnd = pdoc->LineFromPosition(targetEnd);
-+ Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(targetStart));
-+ Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(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) {
-- Sci::Position posLineStart = pdoc->LineStart(line);
-+ Sci::Position posLineStart = static_cast<Sci::Position>(pdoc->LineStart(line));
- view.LayoutLine(*this, line, surface, vs, ll, pixelWidth);
- Sci::Position lengthInsertedTotal = 0;
- for (int subLine = 1; subLine < ll->lines; subLine++) {
-@@ -1617,7 +1630,7 @@
- lengthInsertedTotal += lengthInserted;
- }
- }
-- lineEnd = pdoc->LineFromPosition(targetEnd);
-+ lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(targetEnd));
- }
- }
- }
-@@ -1834,7 +1847,7 @@
-
- Sci::Position Editor::RealizeVirtualSpace(Sci::Position position, Sci::Position virtualSpace) {
- if (virtualSpace > 0) {
-- const Sci::Line line = pdoc->LineFromPosition(position);
-+ const Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(position));
- const Sci::Position indent = pdoc->GetLineIndentPosition(line);
- if (indent == position) {
- return pdoc->SetLineIndentation(line, pdoc->GetLineIndentation(line) + virtualSpace);
-@@ -1915,7 +1928,7 @@
- if (Wrapping()) {
- AutoSurface surface(this);
- if (surface) {
-- if (WrapOneLine(surface, pdoc->LineFromPosition(positionInsert))) {
-+ if (WrapOneLine(surface, static_cast<Sci::Line>(pdoc->LineFromPosition(positionInsert)))) {
- SetScrollBars();
- SetVerticalScrollPos();
- Redraw();
-@@ -2031,7 +2044,8 @@
- PasteRectangular(sel.Start(), text, len);
- } else {
- if (shape == pasteLine) {
-- Sci::Position insertPos = pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret()));
-+ Sci::Position insertPos = static_cast<Sci::Position>(
-+ 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')) {
-@@ -2072,7 +2086,7 @@
- {
- UndoGroup ug(pdoc);
- if (0 != pdoc->Length()) {
-- pdoc->DeleteChars(0, pdoc->Length());
-+ pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length()));
- }
- if (!pdoc->IsReadOnly()) {
- cs.Clear();
-@@ -2118,7 +2132,7 @@
- }
- sel.Clear();
- sel.RangeMain() = SelectionRange(pos);
-- Sci::Line line = pdoc->LineFromPosition(sel.MainCaret());
-+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- UndoGroup ug(pdoc);
- sel.RangeMain().caret = RealizeVirtualSpace(sel.RangeMain().caret);
- int xInsert = XFromPosition(sel.RangeMain().caret);
-@@ -2131,9 +2145,9 @@
- line++;
- if (line >= pdoc->LinesTotal()) {
- if (pdoc->eolMode != SC_EOL_LF)
-- pdoc->InsertString(pdoc->Length(), "\r", 1);
-+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\r", 1);
- if (pdoc->eolMode != SC_EOL_CR)
-- pdoc->InsertString(pdoc->Length(), "\n", 1);
-+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()), "\n", 1);
- }
- // Pad the end of lines with spaces if required
- sel.RangeMain().caret.SetPosition(PositionFromLineX(line, xInsert));
-@@ -2193,7 +2207,7 @@
-
- void Editor::SelectAll() {
- sel.Clear();
-- SetSelection(0, pdoc->Length());
-+ SetSelection(0, static_cast<Sci::Position>(pdoc->Length()));
- Redraw();
- }
-
-@@ -2230,7 +2244,8 @@
- sel.Range(r).caret.SetVirtualSpace(sel.Range(r).caret.VirtualSpace() - 1);
- sel.Range(r).anchor.SetVirtualSpace(sel.Range(r).caret.VirtualSpace());
- } else {
-- Sci::Line lineCurrentPos = pdoc->LineFromPosition(sel.Range(r).caret.Position());
-+ Sci::Line lineCurrentPos = static_cast<Sci::Line>(
-+ pdoc->LineFromPosition(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) {
-@@ -2388,11 +2403,11 @@
- bool Editor::NotifyMarginClick(Point pt, int modifiers) {
- const int marginClicked = vs.MarginFromLocation(pt);
- if ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) {
-- Sci::Position position = pdoc->LineStart(LineFromLocation(pt));
-+ Sci::Position position = static_cast<Sci::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;
-- Sci::Line lineClick = pdoc->LineFromPosition(position);
-+ Sci::Line lineClick = static_cast<Sci::Line>(pdoc->LineFromPosition(position));
- if (shift && ctrl) {
- FoldAll(SC_FOLDACTION_TOGGLE);
- } else {
-@@ -2426,7 +2441,7 @@
- bool Editor::NotifyMarginRightClick(Point pt, int modifiers) {
- int marginRightClicked = vs.MarginFromLocation(pt);
- if ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) {
-- Sci::Position position = pdoc->LineStart(LineFromLocation(pt));
-+ Sci::Position position = static_cast<Sci::Position>(pdoc->LineStart(LineFromLocation(pt)));
- SCNotification scn = {};
- scn.nmhdr.code = SCN_MARGINRIGHTCLICK;
- scn.modifiers = modifiers;
-@@ -2476,7 +2491,7 @@
- void Editor::CheckModificationForWrap(DocModification mh) {
- if (mh.modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT)) {
- view.llc.Invalidate(LineLayout::llCheckTextAndStyle);
-- Sci::Line lineDoc = pdoc->LineFromPosition(mh.position);
-+ Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
- Sci::Line lines = std::max(static_cast<Sci::Line>(0), mh.linesAdded);
- if (Wrapping()) {
- NeedWrapping(lineDoc, lineDoc + lines + 1);
-@@ -2518,7 +2533,8 @@
- if (mh.modificationType & SC_MOD_CHANGELINESTATE) {
- if (paintState == painting) {
- CheckForChangeOutsidePaint(
-- Range(pdoc->LineStart(mh.line), pdoc->LineStart(mh.line + 1)));
-+ Range(static_cast<Sci::Position>(pdoc->LineStart(mh.line)),
-+ static_cast<Sci::Position>(pdoc->LineStart(mh.line + 1))));
- } else {
- // Could check that change is before last visible line.
- Redraw();
-@@ -2563,20 +2579,20 @@
- }
- if ((mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) && cs.HiddenLines()) {
- // Some lines are hidden so may need shown.
-- const Sci::Line lineOfPos = pdoc->LineFromPosition(mh.position);
-+ const Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(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 = pdoc->LineStart(lineOfPos+1);
-+ endNeedShown = static_cast<Sci::Position>(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 = pdoc->LineFromPosition(mh.position+mh.length);
-+ Sci::Line lineLast = static_cast<Sci::Line>(pdoc->LineFromPosition(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 = pdoc->LineEnd(lineLast);
-+ endNeedShown = static_cast<Sci::Position>(pdoc->LineEnd(lineLast));
- }
- }
- }
-@@ -2585,7 +2601,7 @@
- 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 = pdoc->LineFromPosition(mh.position);
-+ Sci::Line lineOfPos = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
- if (mh.position > pdoc->LineStart(lineOfPos))
- lineOfPos++; // Affecting subsequent lines
- if (mh.linesAdded > 0) {
-@@ -2596,7 +2612,7 @@
- view.LinesAddedOrRemoved(lineOfPos, mh.linesAdded);
- }
- if (mh.modificationType & SC_MOD_CHANGEANNOTATION) {
-- Sci::Line lineDoc = pdoc->LineFromPosition(mh.position);
-+ Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(mh.position));
- if (vs.annotationVisible) {
- if (cs.SetHeight(lineDoc, cs.GetHeight(lineDoc) + mh.annotationLinesAdded)) {
- SetScrollBars();
-@@ -2616,7 +2632,7 @@
- }
-
- if (paintState == notPainting && !CanDeferToLastStep(mh)) {
-- QueueIdleWork(WorkNeeded::workStyle, pdoc->Length());
-+ QueueIdleWork(WorkNeeded::workStyle, static_cast<Sci::Position>(pdoc->Length()));
- Redraw();
- }
- } else {
-@@ -2824,12 +2840,12 @@
- Sci::Line topLineNew;
- SelectionPosition newPos;
-
-- const Sci::Line currentLine = pdoc->LineFromPosition(sel.MainCaret());
-+ const Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- const Sci::Line topStutterLine = topLine + caretYSlop;
-- const Sci::Line bottomStutterLine =
-+ const Sci::Line bottomStutterLine = static_cast<Sci::Line>(
- pdoc->LineFromPosition(PositionFromLocation(
- Point::FromInts(lastXChosen - xOffset, direction * vs.lineHeight * LinesToScroll())))
-- - caretYSlop - 1;
-+ - caretYSlop - 1);
-
- if (stuttered && (direction < 0 && currentLine > topStutterLine)) {
- topLineNew = topLine;
-@@ -2907,15 +2923,17 @@
- }
-
- void Editor::LineTranspose() {
-- Sci::Line line = pdoc->LineFromPosition(sel.MainCaret());
-+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- if (line > 0) {
- UndoGroup ug(pdoc);
-
-- const Sci::Position startPrevious = pdoc->LineStart(line - 1);
-- const std::string linePrevious = RangeText(startPrevious, pdoc->LineEnd(line - 1));
--
-- Sci::Position startCurrent = pdoc->LineStart(line);
-- const std::string lineCurrent = RangeText(startCurrent, pdoc->LineEnd(line));
-+ 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)));
-+
-+ Sci::Position startCurrent = static_cast<Sci::Position>(pdoc->LineStart(line));
-+ const std::string lineCurrent = RangeText(startCurrent,
-+ static_cast<Sci::Position>(pdoc->LineEnd(line)));
-
- pdoc->DeleteChars(startCurrent, static_cast<Sci::Position>(lineCurrent.length()));
- pdoc->DeleteChars(startPrevious, static_cast<Sci::Position>(linePrevious.length()));
-@@ -2931,8 +2949,10 @@
- }
-
- void Editor::LineReverse() {
-- const Sci::Line lineStart = pdoc->LineFromPosition(sel.RangeMain().Start().Position());
-- const Sci::Line lineEnd = pdoc->LineFromPosition(sel.RangeMain().End().Position()-1);
-+ 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 lineDiff = lineEnd - lineStart;
- if (lineDiff <= 0)
- return;
-@@ -2940,10 +2960,10 @@
- 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 = 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));
-+ 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());
- pdoc->DeleteChars(lineStart2, lineLen2);
-@@ -2953,7 +2973,8 @@
- pdoc->InsertString(lineStart1, line2.c_str(), lineLen2);
- }
- // Wholly select all affected lines
-- sel.RangeMain() = SelectionRange(pdoc->LineStart(lineStart), pdoc->LineStart(lineEnd+1));
-+ sel.RangeMain() = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineStart)),
-+ static_cast<Sci::Position>(pdoc->LineStart(lineEnd+1)));
- }
-
- void Editor::Duplicate(bool forLine) {
-@@ -2971,9 +2992,9 @@
- SelectionPosition start = sel.Range(r).Start();
- SelectionPosition end = sel.Range(r).End();
- if (forLine) {
-- Sci::Line line = pdoc->LineFromPosition(sel.Range(r).caret.Position());
-- start = SelectionPosition(pdoc->LineStart(line));
-- end = SelectionPosition(pdoc->LineEnd(line));
-+ 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)));
- }
- std::string text = RangeText(start.Position(), end.Position());
- Sci::Position lengthInserted = eolLen;
-@@ -2984,8 +3005,9 @@
- if (sel.Count() && sel.IsRectangular()) {
- SelectionPosition last = sel.Last();
- if (forLine) {
-- Sci::Line line = pdoc->LineFromPosition(last.Position());
-- last = SelectionPosition(last.Position() + pdoc->LineStart(line+1) - pdoc->LineStart(line));
-+ Sci::Line line = static_cast<Sci::Line>(pdoc->LineFromPosition(last.Position()));
-+ last = SelectionPosition(last.Position() +
-+ static_cast<Sci::Position>(pdoc->LineStart(line+1) - pdoc->LineStart(line)));
- }
- if (sel.Rectangular().anchor > sel.Rectangular().caret)
- sel.Rectangular().anchor = last;
-@@ -3054,8 +3076,8 @@
- int skipLines = 0;
-
- if (vs.annotationVisible) {
-- const Sci::Line lineDoc = pdoc->LineFromPosition(spStart.Position());
-- const Point ptStartLine = LocationFromPosition(pdoc->LineStart(lineDoc));
-+ const Sci::Line lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(spStart.Position()));
-+ const Point ptStartLine = LocationFromPosition(static_cast<Sci::Position>(pdoc->LineStart(lineDoc)));
- const int subLine = static_cast<int>(pt.y - ptStartLine.y) / vs.lineHeight;
-
- if (direction < 0 && subLine == 0) {
-@@ -3145,7 +3167,7 @@
- Sci::Position savedPos = sel.MainCaret();
- do {
- MovePositionTo(SelectionPosition(direction > 0 ? pdoc->ParaDown(sel.MainCaret()) : pdoc->ParaUp(sel.MainCaret())), selt);
-- lineDoc = pdoc->LineFromPosition(sel.MainCaret());
-+ lineDoc = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
- if (direction > 0) {
- if (sel.MainCaret() >= pdoc->Length() && !cs.GetVisible(lineDoc)) {
- if (selt == Selection::noSel) {
-@@ -3321,7 +3343,8 @@
- }
- break;
- case SCI_HOMERECTEXTEND:
-- spCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
-+ spCaret = SelectionPosition(
-+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
- break;
- case SCI_VCHOMERECTEXTEND:
- spCaret = SelectionPosition(pdoc->VCHomePosition(spCaret.Position()));
-@@ -3392,7 +3415,8 @@
- break;
- case SCI_HOME:
- case SCI_HOMEEXTEND:
-- spCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
-+ spCaret = SelectionPosition(
-+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
- break;
- case SCI_HOMEDISPLAY:
- case SCI_HOMEDISPLAYEXTEND:
-@@ -3402,7 +3426,8 @@
- case SCI_HOMEWRAPEXTEND:
- spCaret = MovePositionSoVisible(StartEndDisplayLine(spCaret.Position(), true), -1);
- if (spCaretNow <= spCaret)
-- spCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));
-+ spCaret = SelectionPosition(
-+ static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position()))));
- break;
- case SCI_VCHOME:
- case SCI_VCHOMEEXTEND:
-@@ -3552,13 +3577,13 @@
- break;
- case SCI_DELLINELEFT:
- rangeDelete = Range(
-- pdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position())),
-+ static_cast<Sci::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(),
-- pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position())));
-+ static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position()))));
- break;
- }
- if (!RangeContainsProtected(rangeDelete.start, rangeDelete.end)) {
-@@ -3669,11 +3694,11 @@
- SetLastXChosen();
- break;
- case SCI_DOCUMENTEND:
-- MovePositionTo(pdoc->Length());
-+ MovePositionTo(static_cast<Sci::Position>(pdoc->Length()));
- SetLastXChosen();
- break;
- case SCI_DOCUMENTENDEXTEND:
-- MovePositionTo(pdoc->Length(), Selection::selStream);
-+ MovePositionTo(static_cast<Sci::Position>(pdoc->Length()), Selection::selStream);
- SetLastXChosen();
- break;
- case SCI_STUTTEREDPAGEUP:
-@@ -3780,26 +3805,26 @@
- return DelWordOrLine(iMessage);
-
- case SCI_LINECOPY: {
-- const Sci::Line lineStart = pdoc->LineFromPosition(SelectionStart().Position());
-- const Sci::Line lineEnd = pdoc->LineFromPosition(SelectionEnd().Position());
-- CopyRangeToClipboard(pdoc->LineStart(lineStart),
-- pdoc->LineStart(lineEnd + 1));
-+ 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)));
- }
- break;
- case SCI_LINECUT: {
-- const Sci::Line lineStart = pdoc->LineFromPosition(SelectionStart().Position());
-- const Sci::Line lineEnd = pdoc->LineFromPosition(SelectionEnd().Position());
-- const Sci::Position start = pdoc->LineStart(lineStart);
-- const Sci::Position end = pdoc->LineStart(lineEnd + 1);
-+ 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));
- SetSelection(start, end);
- Cut();
- SetLastXChosen();
- }
- break;
- case SCI_LINEDELETE: {
-- const Sci::Line line = pdoc->LineFromPosition(sel.MainCaret());
-- const Sci::Position start = pdoc->LineStart(line);
-- const Sci::Position end = pdoc->LineStart(line + 1);
-+ 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));
- pdoc->DeleteChars(start, end - start);
- }
- break;
-@@ -3852,9 +3877,10 @@
- void Editor::Indent(bool forwards) {
- UndoGroup ug(pdoc);
- for (size_t r=0; r<sel.Count(); r++) {
-- Sci::Line lineOfAnchor = pdoc->LineFromPosition(sel.Range(r).anchor.Position());
-+ Sci::Line lineOfAnchor = static_cast<Sci::Line>(
-+ pdoc->LineFromPosition(sel.Range(r).anchor.Position()));
- Sci::Position caretPosition = sel.Range(r).caret.Position();
-- Sci::Line lineCurrentPos = pdoc->LineFromPosition(caretPosition);
-+ Sci::Line lineCurrentPos = static_cast<Sci::Line>(pdoc->LineFromPosition(caretPosition));
- if (lineOfAnchor == lineCurrentPos) {
- if (forwards) {
- pdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length());
-@@ -3900,8 +3926,10 @@
- }
- }
- } else { // Multiline
-- const Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() - pdoc->LineStart(lineOfAnchor);
-- const Sci::Position currentPosPosOnLine = caretPosition - pdoc->LineStart(lineCurrentPos);
-+ const Sci::Position anchorPosOnLine = sel.Range(r).anchor.Position() -
-+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor));
-+ const Sci::Position currentPosPosOnLine = caretPosition -
-+ static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos));
- // Multiple lines selected so indent / dedent
- const Sci::Line lineTopSel = std::min(lineOfAnchor, lineCurrentPos);
- Sci::Line lineBottomSel = std::max(lineOfAnchor, lineCurrentPos);
-@@ -3910,14 +3938,18 @@
- pdoc->Indent(forwards, lineBottomSel, lineTopSel);
- if (lineOfAnchor < lineCurrentPos) {
- if (currentPosPosOnLine == 0)
-- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));
-+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
-+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
- else
-- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos + 1), pdoc->LineStart(lineOfAnchor));
-+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos + 1)),
-+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
- } else {
- if (anchorPosOnLine == 0)
-- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));
-+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
-+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor)));
- else
-- sel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor + 1));
-+ sel.Range(r) = SelectionRange(static_cast<Sci::Position>(pdoc->LineStart(lineCurrentPos)),
-+ static_cast<Sci::Position>(pdoc->LineStart(lineOfAnchor + 1)));
- }
- }
- }
-@@ -4003,7 +4035,7 @@
- pdoc->SetCaseFolder(CaseFolderForEncoding());
- try {
- if (iMessage == SCI_SEARCHNEXT) {
-- pos = pdoc->FindText(searchAnchor, pdoc->Length(), txt,
-+ pos = pdoc->FindText(searchAnchor, static_cast<Sci::Position>(pdoc->Length()), txt,
- static_cast<int>(wParam),
- &lengthFound);
- } else {
-@@ -4068,7 +4100,7 @@
- lineNo = pdoc->LinesTotal();
- if (lineNo < 0)
- lineNo = 0;
-- SetEmptySelection(pdoc->LineStart(lineNo));
-+ SetEmptySelection(static_cast<Sci::Position>(pdoc->LineStart(lineNo)));
- ShowCaretAtCurrentPosition();
- EnsureCaretVisible();
- }
-@@ -4096,9 +4128,9 @@
- void Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) {
- if (sel.Empty()) {
- if (allowLineCopy) {
-- Sci::Line currentLine = pdoc->LineFromPosition(sel.MainCaret());
-- Sci::Position start = pdoc->LineStart(currentLine);
-- Sci::Position end = pdoc->LineEnd(currentLine);
-+ Sci::Line currentLine = static_cast<Sci::Line>(pdoc->LineFromPosition(sel.MainCaret()));
-+ Sci::Position start = static_cast<Sci::Position>(pdoc->LineStart(currentLine));
-+ Sci::Position end = static_cast<Sci::Position>(pdoc->LineEnd(currentLine));
-
- std::string text = RangeText(start, end);
- if (pdoc->eolMode != SC_EOL_LF)
-@@ -4314,17 +4346,17 @@
- void Editor::LineSelection(Sci::Position lineCurrentPos_, Sci::Position lineAnchorPos_, bool wholeLine) {
- Sci::Position selCurrentPos, selAnchorPos;
- if (wholeLine) {
-- Sci::Line lineCurrent_ = pdoc->LineFromPosition(lineCurrentPos_);
-- Sci::Line lineAnchor_ = pdoc->LineFromPosition(lineAnchorPos_);
-+ Sci::Line lineCurrent_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineCurrentPos_));
-+ Sci::Line lineAnchor_ = static_cast<Sci::Line>(pdoc->LineFromPosition(lineAnchorPos_));
- if (lineAnchorPos_ < lineCurrentPos_) {
-- selCurrentPos = pdoc->LineStart(lineCurrent_ + 1);
-- selAnchorPos = pdoc->LineStart(lineAnchor_);
-+ selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_ + 1));
-+ selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_));
- } else if (lineAnchorPos_ > lineCurrentPos_) {
-- selCurrentPos = pdoc->LineStart(lineCurrent_);
-- selAnchorPos = pdoc->LineStart(lineAnchor_ + 1);
-+ selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineCurrent_));
-+ selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1));
- } else { // Same line, select it
-- selCurrentPos = pdoc->LineStart(lineAnchor_ + 1);
-- selAnchorPos = pdoc->LineStart(lineAnchor_);
-+ selCurrentPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_ + 1));
-+ selAnchorPos = static_cast<Sci::Position>(pdoc->LineStart(lineAnchor_));
- }
- } else {
- if (lineAnchorPos_ < lineCurrentPos_) {
-@@ -4946,9 +4978,9 @@
- // detect multiline comment additions and heals single line comments
- Sci::Line lineAfter = TopLineOfMain() + static_cast<Sci::Line>(rcArea.bottom - 1) / vs.lineHeight + 1;
- if (lineAfter < cs.LinesDisplayed())
-- return pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1);
-+ return static_cast<Sci::Position>(pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1));
- else
-- return pdoc->Length();
-+ return static_cast<Sci::Position>(pdoc->Length());
- }
-
- // Style to a position within the view. If this causes a change at end of last line then
-@@ -5020,7 +5052,7 @@
- void Editor::IdleStyling() {
- const Sci::Position posAfterArea = PositionAfterArea(GetClientRectangle());
- const Sci::Position endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ?
-- pdoc->Length() : posAfterArea;
-+ static_cast<Sci::Position>(pdoc->Length()) : posAfterArea;
- const Sci::Position posAfterMax = PositionAfterMaxStyling(endGoal, false);
- pdoc->StyleToAdjustingLineDuration(posAfterMax);
- if (pdoc->GetEndStyled() >= endGoal) {
-@@ -5032,7 +5064,7 @@
- // 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(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2));
-+ StyleToPositionInView(static_cast<Sci::Position>(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2)));
- }
- NotifyUpdateUI();
- workNeeded.Reset();
-@@ -5227,7 +5259,8 @@
- cs.SetExpanded(line, false);
- cs.SetVisible(line + 1, lineMaxSubord, false);
-
-- const Sci::Line lineCurrent = pdoc->LineFromPosition(sel.MainCaret());
-+ const Sci::Line lineCurrent = static_cast<Sci::Line>(
-+ pdoc->LineFromPosition(sel.MainCaret()));
- if (lineCurrent > line && lineCurrent <= lineMaxSubord) {
- // This does not re-expand the fold
- EnsureCaretVisible();
-@@ -5346,7 +5379,7 @@
- }
-
- void Editor::FoldAll(int action) {
-- pdoc->EnsureStyledTo(pdoc->Length());
-+ pdoc->EnsureStyledTo(static_cast<Sci::Position>(pdoc->Length()));
- Sci::Line maxLine = pdoc->LinesTotal();
- bool expanding = action == SC_FOLDACTION_EXPAND;
- if (action == SC_FOLDACTION_TOGGLE) {
-@@ -5435,8 +5468,8 @@
-
- void Editor::NeedShown(Sci::Position pos, Sci::Position len) {
- if (foldAutomatic & SC_AUTOMATICFOLD_SHOW) {
-- const Sci::Line lineStart = pdoc->LineFromPosition(pos);
-- const Sci::Line lineEnd = pdoc->LineFromPosition(pos+len);
-+ const Sci::Line lineStart = static_cast<Sci::Line>(pdoc->LineFromPosition(pos));
-+ const Sci::Line lineEnd = static_cast<Sci::Line>(pdoc->LineFromPosition(pos+len));
- for (Sci::Line line = lineStart; line <= lineEnd; line++) {
- EnsureLineVisible(line, false);
- }
-@@ -5704,7 +5737,7 @@
- if (lParam == 0)
- return 0;
- UndoGroup ug(pdoc);
-- pdoc->DeleteChars(0, pdoc->Length());
-+ pdoc->DeleteChars(0, static_cast<Sci::Position>(pdoc->Length()));
- SetEmptySelection(0);
- const char *text = CharPtrFromSPtr(lParam);
- pdoc->InsertString(0, text, istrlen(text));
-@@ -5781,8 +5814,10 @@
- break;
-
- case SCI_GETLINE: { // Risk of overwriting the end of the buffer
-- Sci::Position lineStart = pdoc->LineStart(static_cast<Sci::Line>(wParam));
-- Sci::Position lineEnd = pdoc->LineStart(static_cast<Sci::Line>(wParam + 1));
-+ Sci::Position lineStart = static_cast<Sci::Position>(
-+ pdoc->LineStart(static_cast<Sci::Line>(wParam)));
-+ Sci::Position lineEnd = static_cast<Sci::Position>(
-+ pdoc->LineStart(static_cast<Sci::Line>(wParam + 1)));
- if (lParam == 0) {
- return lineEnd - lineStart;
- }
-@@ -5807,7 +5842,7 @@
- Sci::Position nStart = static_cast<Sci::Position>(wParam);
- Sci::Position nEnd = static_cast<Sci::Position>(lParam);
- if (nEnd < 0)
-- nEnd = pdoc->Length();
-+ nEnd = static_cast<Sci::Position>(pdoc->Length());
- if (nStart < 0)
- nStart = nEnd; // Remove selection
- InvalidateSelection(SelectionRange(nStart, nEnd));
-@@ -5893,7 +5928,7 @@
-
- case SCI_TARGETWHOLEDOCUMENT:
- targetStart = 0;
-- targetEnd = pdoc->Length();
-+ targetEnd = static_cast<Sci::Position>(pdoc->Length());
- break;
-
- case SCI_TARGETFROMSELECTION:
-@@ -5940,7 +5975,8 @@
- return pdoc->MovePositionOutsideChar(static_cast<int>(wParam) + 1, 1, true);
-
- case SCI_POSITIONRELATIVE:
-- return Sci::clamp(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam)), 0, pdoc->Length());
-+ return Sci::clamp(static_cast<int>(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam))),
-+ 0, static_cast<int>(pdoc->Length()));
-
- case SCI_LINESCROLL:
- ScrollTo(topLine + static_cast<Sci::Line>(lParam));
-@@ -6001,7 +6037,7 @@
- Sci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam);
- Sci::Position cpMax = static_cast<Sci::Position>(tr->chrg.cpMax);
- if (cpMax == -1)
-- cpMax = pdoc->Length();
-+ cpMax = static_cast<Sci::Position>(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);
-@@ -6072,7 +6108,8 @@
- return 0;
-
- case SCI_APPENDTEXT:
-- pdoc->InsertString(pdoc->Length(), CharPtrFromSPtr(lParam), static_cast<int>(wParam));
-+ pdoc->InsertString(static_cast<Sci::Position>(pdoc->Length()),
-+ CharPtrFromSPtr(lParam), static_cast<int>(wParam));
- return 0;
-
- case SCI_CLEARALL:
-@@ -6311,9 +6348,9 @@
- break;
-
- case SCI_GETCURLINE: {
-- const Sci::Line lineCurrentPos = pdoc->LineFromPosition(sel.MainCaret());
-- const Sci::Position lineStart = pdoc->LineStart(lineCurrentPos);
-- const Sci::Position lineEnd = pdoc->LineStart(lineCurrentPos + 1);
-+ 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));
- if (lParam == 0) {
- return 1 + lineEnd - lineStart;
- }
-@@ -7585,8 +7622,9 @@
- }
- case SCI_GETLINESELSTARTPOSITION:
- case SCI_GETLINESELENDPOSITION: {
-- SelectionSegment segmentLine(SelectionPosition(pdoc->LineStart(static_cast<int>(wParam))),
-- SelectionPosition(pdoc->LineEnd(static_cast<int>(wParam))));
-+ SelectionSegment segmentLine(
-+ SelectionPosition(static_cast<Sci::Position>(pdoc->LineStart(static_cast<int>(wParam)))),
-+ SelectionPosition(static_cast<Sci::Position>(pdoc->LineEnd(static_cast<int>(wParam)))));
- for (size_t r=0; r<sel.Count(); r++) {
- const SelectionSegment portion = sel.Range(r).Intersect(segmentLine);
- if (portion.start.IsValid()) {
-diff -r c15f84c11e17 -r 95346e626cf8 src/MarginView.cxx
---- a/src/MarginView.cxx Thu Jun 22 14:36:26 2017 +1000
-+++ b/src/MarginView.cxx Thu Jun 22 14:52:11 2017 +1000
-@@ -248,7 +248,8 @@
- }
- if (highlightDelimiter.isEnabled) {
- Sci::Line lastLine = model.cs.DocFromDisplay(topLine + model.LinesOnScreen()) + 1;
-- model.pdoc->GetHighlightDelimiters(highlightDelimiter, model.pdoc->LineFromPosition(model.sel.MainCaret()), lastLine);
-+ model.pdoc->GetHighlightDelimiters(highlightDelimiter,
-+ static_cast<Sci::Line>(model.pdoc->LineFromPosition(model.sel.MainCaret())), lastLine);
- }
- }
-
-diff -r c15f84c11e17 -r 95346e626cf8 win32/ScintillaWin.cxx
---- a/win32/ScintillaWin.cxx Thu Jun 22 14:36:26 2017 +1000
-+++ b/win32/ScintillaWin.cxx Thu Jun 22 14:52:11 2017 +1000
-@@ -1676,7 +1676,7 @@
- Sci::Position nStart = static_cast<Sci::Position>(wParam);
- Sci::Position nEnd = static_cast<Sci::Position>(lParam);
- if (nStart == 0 && nEnd == -1) {
-- nEnd = pdoc->Length();
-+ nEnd = static_cast<Sci::Position>(pdoc->Length());
- }
- if (nStart == -1) {
- nStart = nEnd; // Remove selection
-@@ -1693,7 +1693,7 @@
- Sci_CharacterRange *pCR = reinterpret_cast<Sci_CharacterRange *>(lParam);
- sel.selType = Selection::selStream;
- if (pCR->cpMin == 0 && pCR->cpMax == -1) {
-- SetSelection(pCR->cpMin, pdoc->Length());
-+ SetSelection(pCR->cpMin, static_cast<Sci::Position>(pdoc->Length()));
- } else {
- SetSelection(pCR->cpMin, pCR->cpMax);
- }
-@@ -2679,11 +2679,11 @@
- // 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 = pdoc->LineFromPosition(mainStart);
-+ const Sci::Line curLine = static_cast<Sci::Line>(pdoc->LineFromPosition(mainStart));
- if (curLine != pdoc->LineFromPosition(mainEnd))
- return 0;
-- const Sci::Position baseStart = pdoc->LineStart(curLine);
-- const Sci::Position baseEnd = pdoc->LineEnd(curLine);
-+ const Sci::Position baseStart = static_cast<Sci::Position>(pdoc->LineStart(curLine));
-+ const Sci::Position baseEnd = static_cast<Sci::Position>(pdoc->LineEnd(curLine));
- if ((baseStart == baseEnd) || (mainEnd > baseEnd))
- return 0;
-
-@@ -2743,7 +2743,7 @@
- } else {
- // Ensure docCompStart+docCompLen be not beyond lineEnd.
- // since docCompLen by byte might break eol.
-- Sci::Position lineEnd = pdoc->LineEnd(pdoc->LineFromPosition(rBase));
-+ Sci::Position lineEnd = static_cast<Sci::Position>(pdoc->LineEnd(pdoc->LineFromPosition(rBase)));
- Sci::Position overflow = (docCompStart + docCompLen) - lineEnd;
- if (overflow > 0) {
- pdoc->DeleteChars(docCompStart, docCompLen - overflow);