diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CellBuffer.cxx | 4 | ||||
-rw-r--r-- | src/CellBuffer.h | 1 | ||||
-rw-r--r-- | src/Document.h | 1 | ||||
-rw-r--r-- | src/Editor.cxx | 3 | ||||
-rw-r--r-- | src/SplitVector.h | 6 |
5 files changed, 15 insertions, 0 deletions
diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index 85bf43552..0e9ae6950 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -587,6 +587,10 @@ char CellBuffer::StyleAt(int position) { return style.ValueAt(position); } +const char *CellBuffer::BufferPointer() { + return substance.BufferPointer(); +} + // The char* returned is to an allocation owned by the undo history const char *CellBuffer::InsertString(int position, const char *s, int insertLength, bool &startSequence) { char *data = 0; diff --git a/src/CellBuffer.h b/src/CellBuffer.h index 4f654a8fd..4b83f48e0 100644 --- a/src/CellBuffer.h +++ b/src/CellBuffer.h @@ -171,6 +171,7 @@ public: char CharAt(int position) const; void GetCharRange(char *buffer, int position, int lengthRetrieve); char StyleAt(int position); + const char *BufferPointer(); int Length() const; void Allocate(int newSize); diff --git a/src/Document.h b/src/Document.h index a36c4aafe..04bbd5c74 100644 --- a/src/Document.h +++ b/src/Document.h @@ -159,6 +159,7 @@ public: void EndUndoAction() { cb.EndUndoAction(); } void SetSavePoint(); bool IsSavePoint() { return cb.IsSavePoint(); } + const char *BufferPointer() { return cb.BufferPointer(); } int GetLineIndentation(int line); void SetLineIndentation(int line, int indent); diff --git a/src/Editor.cxx b/src/Editor.cxx index af60624ff..3b6e7a2c3 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -7579,6 +7579,9 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_GETPASTECONVERTENDINGS: return convertPastes ? 1 : 0; + case SCI_GETCHARACTERPOINTER: + return reinterpret_cast<sptr_t>(pdoc->BufferPointer()); + default: return DefWndProc(iMessage, wParam, lParam); } diff --git a/src/SplitVector.h b/src/SplitVector.h index 9d62aef72..76f9a8f36 100644 --- a/src/SplitVector.h +++ b/src/SplitVector.h @@ -238,6 +238,12 @@ public: DeleteRange(0, lengthBody); } + T* BufferPointer() { + RoomFor(1); + GapTo(lengthBody); + body[lengthBody] = 0; + return body; + } }; #endif |