aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CellBuffer.cxx
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2018-02-02 14:34:55 +1100
committerNeil <nyamatongwe@gmail.com>2018-02-02 14:34:55 +1100
commit3f1c1f5fe73d9fe48af8ffc2f0dbf2107d65cf52 (patch)
tree2f662f0da33a58e1e9700b358ab695c3c04b7465 /src/CellBuffer.cxx
parentcc13723d8f558fb7c48f3f4ed1bb107f35b95397 (diff)
downloadscintilla-mirror-3f1c1f5fe73d9fe48af8ffc2f0dbf2107d65cf52.tar.gz
Implement SC_DOCUMENTOPTION_STYLES_NONE.
Diffstat (limited to 'src/CellBuffer.cxx')
-rw-r--r--src/CellBuffer.cxx27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx
index 1884a497a..513c9a9b8 100644
--- a/src/CellBuffer.cxx
+++ b/src/CellBuffer.cxx
@@ -342,7 +342,8 @@ void UndoHistory::CompletedRedoStep() {
currentAction++;
}
-CellBuffer::CellBuffer() {
+CellBuffer::CellBuffer(bool hasStyles_) :
+ hasStyles(hasStyles_) {
readOnly = false;
utf8LineEnds = 0;
collectingUndo = true;
@@ -369,7 +370,7 @@ void CellBuffer::GetCharRange(char *buffer, Sci::Position position, Sci::Positio
}
char CellBuffer::StyleAt(Sci::Position position) const {
- return style.ValueAt(position);
+ return hasStyles ? style.ValueAt(position) : 0;
}
void CellBuffer::GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const {
@@ -377,6 +378,10 @@ void CellBuffer::GetStyleRange(unsigned char *buffer, Sci::Position position, Sc
return;
if (position < 0)
return;
+ if (!hasStyles) {
+ std::fill(buffer, buffer + lengthRetrieve, static_cast<unsigned char>(0));
+ return;
+ }
if ((position + lengthRetrieve) > style.Length()) {
Platform::DebugPrintf("Bad GetStyleRange %d for %d of %d\n", position,
lengthRetrieve, style.Length());
@@ -414,6 +419,9 @@ const char *CellBuffer::InsertString(Sci::Position position, const char *s, Sci:
}
bool CellBuffer::SetStyleAt(Sci::Position position, char styleValue) {
+ if (!hasStyles) {
+ return false;
+ }
const char curVal = style.ValueAt(position);
if (curVal != styleValue) {
style.SetValueAt(position, styleValue);
@@ -424,6 +432,9 @@ bool CellBuffer::SetStyleAt(Sci::Position position, char styleValue) {
}
bool CellBuffer::SetStyleFor(Sci::Position position, Sci::Position lengthStyle, char styleValue) {
+ if (!hasStyles) {
+ return false;
+ }
bool changed = false;
PLATFORM_ASSERT(lengthStyle == 0 ||
(lengthStyle > 0 && lengthStyle + position <= style.Length()));
@@ -462,7 +473,9 @@ Sci::Position CellBuffer::Length() const {
void CellBuffer::Allocate(Sci::Position newSize) {
substance.ReAllocate(newSize);
- style.ReAllocate(newSize);
+ if (hasStyles) {
+ style.ReAllocate(newSize);
+ }
}
void CellBuffer::SetLineEndTypes(int utf8LineEnds_) {
@@ -608,7 +621,9 @@ void CellBuffer::BasicInsertString(Sci::Position position, const char *s, Sci::P
}
substance.InsertFromArray(position, s, 0, insertLength);
- style.InsertValue(position, insertLength, 0);
+ if (hasStyles) {
+ style.InsertValue(position, insertLength, 0);
+ }
Sci::Line lineInsert = lv.LineFromPosition(position) + 1;
bool atLineStart = lv.LineStart(lineInsert-1) == position;
@@ -738,7 +753,9 @@ void CellBuffer::BasicDeleteChars(Sci::Position position, Sci::Position deleteLe
}
}
substance.DeleteRange(position, deleteLength);
- style.DeleteRange(position, deleteLength);
+ if (hasStyles) {
+ style.DeleteRange(position, deleteLength);
+ }
}
bool CellBuffer::SetUndoCollection(bool collectUndo) {