diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Document.cxx | 4 | ||||
| -rw-r--r-- | src/Document.h | 2 | ||||
| -rw-r--r-- | src/Editor.cxx | 5 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/Document.cxx b/src/Document.cxx index 3143e7e1f..a9daf9339 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -2660,7 +2660,7 @@ static char BraceOpposite(char ch) noexcept { } // TODO: should be able to extend styled region to find matching brace -Sci::Position Document::BraceMatch(Sci::Position position, Sci::Position /*maxReStyle*/) noexcept { +Sci::Position Document::BraceMatch(Sci::Position position, Sci::Position /*maxReStyle*/, Sci::Position startPos, bool useStartPos) noexcept { const char chBrace = CharAt(position); const char chSeek = BraceOpposite(chBrace); if (chSeek == '\0') @@ -2670,7 +2670,7 @@ Sci::Position Document::BraceMatch(Sci::Position position, Sci::Position /*maxRe if (chBrace == '(' || chBrace == '[' || chBrace == '{' || chBrace == '<') direction = 1; int depth = 1; - position = NextPosition(position, direction); + position = useStartPos ? startPos : NextPosition(position, direction); while ((position >= 0) && (position < LengthNoExcept())) { const char chAtPos = CharAt(position); const int styAtPos = StyleIndexAt(position); diff --git a/src/Document.h b/src/Document.h index a9c591cb1..57dcd6e36 100644 --- a/src/Document.h +++ b/src/Document.h @@ -501,7 +501,7 @@ public: Sci::Position ParaUp(Sci::Position pos) const; Sci::Position ParaDown(Sci::Position pos) const; int IndentSize() const noexcept { return actualIndentInChars; } - Sci::Position BraceMatch(Sci::Position position, Sci::Position maxReStyle) noexcept; + Sci::Position BraceMatch(Sci::Position position, Sci::Position maxReStyle, Sci::Position startPos, bool useStartPos) noexcept; private: void NotifyModifyAttempt(); diff --git a/src/Editor.cxx b/src/Editor.cxx index 104f6d500..630a6f69e 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -7632,7 +7632,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { case SCI_BRACEMATCH: // wParam is position of char to find brace for, // lParam is maximum amount of text to restyle to find it - return pdoc->BraceMatch(static_cast<Sci::Position>(wParam), lParam); + return pdoc->BraceMatch(static_cast<Sci::Position>(wParam), lParam, 0, false); + + case SCI_BRACEMATCHNEXT: + return pdoc->BraceMatch(static_cast<Sci::Position>(wParam), 0, lParam, true); case SCI_GETVIEWEOL: return vs.viewEOL; |
