diff options
| author | Neil <nyamatongwe@gmail.com> | 2015-06-30 14:06:48 +1000 |
|---|---|---|
| committer | Neil <nyamatongwe@gmail.com> | 2015-06-30 14:06:48 +1000 |
| commit | c9ea3753b0d4f22ade1701e228d5fb19ef230bc7 (patch) | |
| tree | 5aeef08d367b469f59516b4f7ff6e861690eb912 /src/EditView.cxx | |
| parent | 5928d8b0a198fedb5e23855aa37cc95b4220a26d (diff) | |
| download | scintilla-mirror-c9ea3753b0d4f22ade1701e228d5fb19ef230bc7.tar.gz | |
Added SC_CASE_CAMEL to the case mode style attribute.
Diffstat (limited to 'src/EditView.cxx')
| -rw-r--r-- | src/EditView.cxx | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/EditView.cxx b/src/EditView.cxx index 5372e3abd..e6963e56a 100644 --- a/src/EditView.cxx +++ b/src/EditView.cxx @@ -389,9 +389,17 @@ void EditView::LayoutLine(const EditModel &model, int line, Surface *surface, co else if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseLower) allSame = allSame && (ll->chars[numCharsInLine] == static_cast<char>(tolower(chDoc))); - else // Style::caseUpper + else if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseUpper) allSame = allSame && (ll->chars[numCharsInLine] == static_cast<char>(toupper(chDoc))); + else { // Style::caseCamel + if ((model.pdoc->WordCharClass(ll->chars[numCharsInLine]) == CharClassify::ccWord) && + ((numCharsInLine == 0) || (model.pdoc->WordCharClass(ll->chars[numCharsInLine - 1]) != CharClassify::ccWord))) { + allSame = allSame && (ll->chars[numCharsInLine] == static_cast<char>(toupper(chDoc))); + } else { + allSame = allSame && (ll->chars[numCharsInLine] == static_cast<char>(tolower(chDoc))); + } + } numCharsInLine++; } allSame = allSame && (ll->styles[numCharsInLine] == styleByte); // For eolFilled @@ -434,6 +442,14 @@ void EditView::LayoutLine(const EditModel &model, int line, Surface *surface, co ll->chars[charInLine] = static_cast<char>(toupper(chDoc)); else if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseLower) ll->chars[charInLine] = static_cast<char>(tolower(chDoc)); + else if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseCamel) { + if ((model.pdoc->WordCharClass(ll->chars[charInLine]) == CharClassify::ccWord) && + ((charInLine == 0) || (model.pdoc->WordCharClass(ll->chars[charInLine - 1]) != CharClassify::ccWord))) { + ll->chars[charInLine] = static_cast<char>(toupper(chDoc)); + } else { + ll->chars[charInLine] = static_cast<char>(tolower(chDoc)); + } + } } } ll->xHighlightGuide = 0; |
