diff options
Diffstat (limited to 'scintilla/src')
-rw-r--r-- | scintilla/src/Document.cxx | 14 | ||||
-rw-r--r-- | scintilla/src/Document.h | 1 | ||||
-rw-r--r-- | scintilla/src/Editor.cxx | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/scintilla/src/Document.cxx b/scintilla/src/Document.cxx index 52069e9..e523787 100644 --- a/scintilla/src/Document.cxx +++ b/scintilla/src/Document.cxx @@ -1094,6 +1094,20 @@ int Document::GetColumn(int pos) { return column;
}
+int Document::CountCharacters(int startPos, int endPos) {
+ startPos = MovePositionOutsideChar(startPos, 1, false);
+ endPos = MovePositionOutsideChar(endPos, -1, false);
+ int count = 0;
+ int i = startPos;
+ while (i < endPos) {
+ count++;
+ if (IsCrLf(i))
+ i++;
+ i = NextPosition(i, 1);
+ }
+ return count;
+}
+
int Document::FindColumn(int line, int column) {
int position = LineStart(line);
if ((line >= 0) && (line < LinesTotal())) {
diff --git a/scintilla/src/Document.h b/scintilla/src/Document.h index c0a849b..64571e6 100644 --- a/scintilla/src/Document.h +++ b/scintilla/src/Document.h @@ -303,6 +303,7 @@ public: void SetLineIndentation(int line, int indent);
int GetLineIndentPosition(int line) const;
int GetColumn(int position);
+ int CountCharacters(int startPos, int endPos);
int FindColumn(int line, int column);
void Indent(bool forwards, int lineBottom, int lineTop);
static char *TransformLineEnds(int *pLenOut, const char *s, size_t len, int eolModeWanted);
diff --git a/scintilla/src/Editor.cxx b/scintilla/src/Editor.cxx index 3c6cf63..355380d 100644 --- a/scintilla/src/Editor.cxx +++ b/scintilla/src/Editor.cxx @@ -9276,6 +9276,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_GETTECHNOLOGY:
return technology;
+ case SCI_COUNTCHARACTERS:
+ return pdoc->CountCharacters(wParam, lParam);
+
default:
return DefWndProc(iMessage, wParam, lParam);
}
|