1 // Scintilla source code edit control
2 /** @file EditModel.cxx
3 ** Defines the editor state that must be visible to EditorView.
5 // Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
25 #include "Scintilla.h"
27 #include "CharacterCategory.h"
30 #include "UniqueString.h"
31 #include "SplitVector.h"
32 #include "Partitioning.h"
33 #include "RunStyles.h"
34 #include "ContractionState.h"
35 #include "CellBuffer.h"
37 #include "Indicator.h"
38 #include "LineMarker.h"
40 #include "ViewStyle.h"
41 #include "CharClassify.h"
42 #include "Decoration.h"
43 #include "CaseFolder.h"
45 #include "UniConversion.h"
46 #include "Selection.h"
47 #include "PositionCache.h"
48 #include "EditModel.h"
50 using namespace Scintilla
;
53 active(false), on(false), period(500) {}
55 EditModel::EditModel() : braces
{} {
58 trackLineWidth
= false;
59 posDrag
= SelectionPosition(Sci::invalidPosition
);
60 braces
[0] = Sci::invalidPosition
;
61 braces
[1] = Sci::invalidPosition
;
62 bracesMatchStyle
= STYLE_BRACEBAD
;
63 highlightGuideColumn
= 0;
64 primarySelection
= true;
65 imeInteraction
= imeWindowed
;
67 foldDisplayTextStyle
= SC_FOLDDISPLAYTEXT_HIDDEN
;
68 hotspot
= Range(Sci::invalidPosition
);
69 hoverIndicatorPos
= Sci::invalidPosition
;
70 wrapWidth
= LineLayout::wrapWidthInfinite
;
71 pdoc
= new Document(SC_DOCUMENTOPTION_DEFAULT
);
73 pcs
= ContractionStateCreate(pdoc
->IsLarge());
76 EditModel::~EditModel() {
81 void EditModel::SetDefaultFoldDisplayText(const char *text
) {
82 defaultFoldDisplayText
= IsNullOrEmpty(text
) ? UniqueString() : UniqueStringCopy(text
);
85 const char *EditModel::GetDefaultFoldDisplayText() const noexcept
{
86 return defaultFoldDisplayText
.get();
89 const char *EditModel::GetFoldDisplayText(Sci::Line lineDoc
) const {
90 if (foldDisplayTextStyle
== SC_FOLDDISPLAYTEXT_HIDDEN
|| pcs
->GetExpanded(lineDoc
)) {
94 const char *text
= pcs
->GetFoldDisplayText(lineDoc
);
95 return text
? text
: defaultFoldDisplayText
.get();