aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Document.cxx4
-rw-r--r--src/Document.h2
-rw-r--r--src/Editor.cxx5
3 files changed, 7 insertions, 4 deletions
diff --git a/src/Document.cxx b/src/Document.cxx
index dcb26acdf..95792fa1f 100644
--- a/src/Document.cxx
+++ b/src/Document.cxx
@@ -2657,7 +2657,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')
@@ -2667,7 +2667,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 6e8507f04..37c37c4b8 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 45cc42804..28fa89120 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -7646,7 +7646,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;