diff options
author | Ferdinand Oeinck <unknown> | 2022-10-04 09:35:06 +1100 |
---|---|---|
committer | Ferdinand Oeinck <unknown> | 2022-10-04 09:35:06 +1100 |
commit | f4d5c00424eff7c84b4152b4df4de5c0ba4b12bc (patch) | |
tree | e239ae33e6bfb8844a150bb1c25b1b643741211d /src/Editor.cxx | |
parent | 232fad28e7003fd38e2468258bcfacc61381ef7a (diff) | |
download | scintilla-mirror-f4d5c00424eff7c84b4152b4df4de5c0ba4b12bc.tar.gz |
Feature [feature-requests:#1453] Added SCI_STYLESETINVISIBLEREPRESENTATION to
make it easier to edit around invisible text.
This also allows representing long lexemes with a single character to provide a
summarized view.
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 97c141bae..35148299e 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -5832,6 +5832,19 @@ void Editor::StyleSetMessage(Message iMessage, uptr_t wParam, sptr_t lParam) { case Message::StyleSetVisible: vs.styles[wParam].visible = lParam != 0; break; + case Message::StyleSetInvisibleRepresentation: { + const char *utf8 = ConstCharPtrFromSPtr(lParam); + char *rep = vs.styles[wParam].invisibleRepresentation; + const int classified = UTF8Classify(utf8); + if (!(classified & UTF8MaskInvalid)) { + // valid UTF-8 + int len = classified & UTF8MaskWidth; + while (len--) + *rep++ = *utf8++; + } + *rep = 0; + break; + } case Message::StyleSetChangeable: vs.styles[wParam].changeable = lParam != 0; break; @@ -5878,6 +5891,8 @@ sptr_t Editor::StyleGetMessage(Message iMessage, uptr_t wParam, sptr_t lParam) { return vs.styles[wParam].visible ? 1 : 0; case Message::StyleGetChangeable: return vs.styles[wParam].changeable ? 1 : 0; + case Message::StyleGetInvisibleRepresentation: + return StringResult(lParam, vs.styles[wParam].invisibleRepresentation); case Message::StyleGetHotSpot: return vs.styles[wParam].hotspot ? 1 : 0; case Message::StyleGetCheckMonospaced: @@ -7328,6 +7343,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { case Message::StyleSetChangeable: case Message::StyleSetHotSpot: case Message::StyleSetCheckMonospaced: + case Message::StyleSetInvisibleRepresentation: StyleSetMessage(iMessage, wParam, lParam); break; @@ -7347,6 +7363,7 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { case Message::StyleGetChangeable: case Message::StyleGetHotSpot: case Message::StyleGetCheckMonospaced: + case Message::StyleGetInvisibleRepresentation: return StyleGetMessage(iMessage, wParam, lParam); case Message::StyleResetDefault: |