diff options
-rw-r--r-- | doc/ScintillaDoc.html | 8 | ||||
-rw-r--r-- | doc/ScintillaHistory.html | 3 | ||||
-rw-r--r-- | include/Scintilla.h | 1 | ||||
-rw-r--r-- | include/Scintilla.iface | 1 | ||||
-rw-r--r-- | src/EditView.cxx | 16 | ||||
-rw-r--r-- | src/ViewStyle.cxx | 6 | ||||
-rw-r--r-- | src/ViewStyle.h | 4 |
7 files changed, 28 insertions, 11 deletions
diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index 263628f4c..e77c064c3 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -2224,6 +2224,14 @@ struct Sci_TextToFind { <td>White space used for indentation is displayed normally but after the first visible character, it is shown as dots and arrows.</td> </tr> + + <tr> + <th align="left"><code>SCWS_VISIBLEONLYININDENT</code></th> + + <td>3</td> + + <td>White space used for indentation is displayed as dots and arrows.</td> + </tr> </tbody> </table> diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index b3225f3a7..de0656980 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -494,6 +494,9 @@ Released 15 September 2015. </li> <li> + Whitespace may be made visible just in indentation. + </li> + <li> The Scintilla framework on Cocoa now contains version numbers. </li> <li> diff --git a/include/Scintilla.h b/include/Scintilla.h index b5e3e9bc0..e3443409b 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -73,6 +73,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define SCWS_INVISIBLE 0 #define SCWS_VISIBLEALWAYS 1 #define SCWS_VISIBLEAFTERINDENT 2 +#define SCWS_VISIBLEONLYININDENT 3 #define SCI_GETVIEWWS 2020 #define SCI_SETVIEWWS 2021 #define SCI_POSITIONFROMPOINT 2022 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index d7a39e92d..ad50a2aaf 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -159,6 +159,7 @@ enu WhiteSpace=SCWS_ val SCWS_INVISIBLE=0 val SCWS_VISIBLEALWAYS=1 val SCWS_VISIBLEAFTERINDENT=2 +val SCWS_VISIBLEONLYININDENT=3 # Are white space characters currently visible? # Returns one of SCWS_* constants. diff --git a/src/EditView.cxx b/src/EditView.cxx index 072a715f4..23fca07af 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -1301,8 +1301,7 @@ void EditView::DrawBackground(Surface *surface, const EditModel &model, const Vi if (ts.representation) { if (ll->chars[i] == '\t') { // Tab display - if (drawWhitespaceBackground && - (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) + if (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation)) textBack = vsDraw.whitespaceColours.back; } else { // Blob display @@ -1316,8 +1315,7 @@ void EditView::DrawBackground(Surface *surface, const EditModel &model, const Vi (inIndentation && vsDraw.viewIndentationGuides == ivReal)) { for (int cpos = 0; cpos <= i - ts.start; cpos++) { if (ll->chars[cpos + ts.start] == ' ') { - if (drawWhitespaceBackground && - (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) { + if (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation)) { PRectangle rcSpace( ll->positions[cpos + ts.start] + xStart - static_cast<XYPOSITION>(subLineStart), rcSegment.top, @@ -1503,8 +1501,7 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi if (ll->chars[i] == '\t') { // Tab display if (phasesDraw == phasesOne) { - if (drawWhitespaceBackground && - (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) + if (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation)) textBack = vsDraw.whitespaceColours.back; surface->FillRectangle(rcSegment, textBack); } @@ -1520,7 +1517,7 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi } } if (vsDraw.viewWhitespace != wsInvisible) { - if (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways) { + if (vsDraw.WhiteSpaceVisible(inIndentation)) { if (vsDraw.whitespaceColours.fore.isSet) textFore = vsDraw.whitespaceColours.fore; surface->PenColour(textFore); @@ -1568,10 +1565,9 @@ void EditView::DrawForeground(Surface *surface, const EditModel &model, const Vi if (vsDraw.viewWhitespace != wsInvisible) { if (vsDraw.whitespaceColours.fore.isSet) textFore = vsDraw.whitespaceColours.fore; - if (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways) { + if (vsDraw.WhiteSpaceVisible(inIndentation)) { XYPOSITION xmid = (ll->positions[cpos + ts.start] + ll->positions[cpos + ts.start + 1]) / 2; - if ((phasesDraw == phasesOne) && drawWhitespaceBackground && - (!inIndentation || vsDraw.viewWhitespace == wsVisibleAlways)) { + if ((phasesDraw == phasesOne) && drawWhitespaceBackground) { textBack = vsDraw.whitespaceColours.back; PRectangle rcSpace( ll->positions[cpos + ts.start] + xStart - static_cast<XYPOSITION>(subLineStart), diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index e8bf51363..9416ddcc6 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -512,6 +512,12 @@ bool ViewStyle::WhitespaceBackgroundDrawn() const { return (viewWhitespace != wsInvisible) && (whitespaceColours.back.isSet); } +bool ViewStyle::WhiteSpaceVisible(bool inIndent) const { + return !inIndent && viewWhitespace == wsVisibleAfterIndent || + inIndent && viewWhitespace == wsVisibleOnlyInIndent || + viewWhitespace == wsVisibleAlways; +} + ColourDesired ViewStyle::WrapColour() const { if (whitespaceColours.fore.isSet) return whitespaceColours.fore; diff --git a/src/ViewStyle.h b/src/ViewStyle.h index 242e7e38e..d5a9d5b71 100644 --- a/src/ViewStyle.h +++ b/src/ViewStyle.h @@ -52,7 +52,7 @@ public: enum IndentView {ivNone, ivReal, ivLookForward, ivLookBoth}; -enum WhiteSpaceVisibility {wsInvisible=0, wsVisibleAlways=1, wsVisibleAfterIndent=2}; +enum WhiteSpaceVisibility {wsInvisible=0, wsVisibleAlways=1, wsVisibleAfterIndent=2, wsVisibleOnlyInIndent=3}; typedef std::map<FontSpecification, FontRealised *> FontMap; @@ -185,6 +185,8 @@ public: bool SetWrapVisualStartIndent(int wrapVisualStartIndent_); bool SetWrapIndentMode(int wrapIndentMode_); + bool WhiteSpaceVisible(bool inIndent) const; + private: void AllocStyles(size_t sizeNew); void CreateAndAddFont(const FontSpecification &fs); |