It is possible to write that plugin yourself, or you could script it with one of the scripting plugins (Pythonscript, Luascript). I did some experimentation with doing it with Pythonscript some time ago; it worked but I didn’t really like the effect so I threw it away. But I did prove out that it was possible…

I didn’t like the effect because the boxing appeared too “cluttered”; here’s an example:

I like the Sublime BracketHighligher way of doing it better…a single box around everything, not each individual line boxed. I don’t really see how it could be done similarly well in Notepad++.

Maybe instead of boxing just use a solid background color for where the boxing would occur, but that might not play too well with other coloring/styling that is done by Notepad++ in programming language source…although in my example Python array above it would probably look good.

@Scott Sumner
thanks! It looks better. It is a very useful bracket tool, if you push it to github, it’s easier for more people to search for it.
parentheses are a well-known feature of the Lisp language. :-)
Clojure is a lisp on JVM. https://clojure.org/
hylang is clojure on python. http://docs.hylang.org/en/stable/

I personally like the second visual effect, with the light yellow highlighting ! Again, an awesome Python script of yours !

Just two things, that I noticed :

When a couple of the symbols, above, is empty, I mean, for instance, syntases as {} or <>, your script does not highlight these two symbols. Just anecdotal !

More annoying : when one of the symbols, of a matched section, is not visible in main editor windows, the highlighting disappears, too !

Easy to test it : just write the two lines, below :

(test start
test end)

And add, successively some blank lines, between these two lines, untill, either, the line (test start or the line test end) becomes invisible => The yellow highlighting, then, disappears !

Now, you knows me, don’t you ? I tried to simulate your Python script with an appropriate regex ! I looked for, more than a complete day ! Pheeeeeeeew !

The main difficulty was to take these four couples of symbols, into account, at the same time ! Moreover, because of possible nested sequence of characters, between two matched symbols, recursive regex syntaxes are really mandatory !

So, here is, below, the regex, in fre-spacing mode, which has an analogue behaviour as your Python script :

At beginning, the (?x syntax forces the free-spacing mode, which means that any space character is not taken in account, unless you use, either, the syntaxes [ ], \x20 or a space character preceded by the escape\ symbol

Afterwards, you can see four analogue structures, surrounded by outer parentheses, There are alternatives, separated with the | symbol and stored as groups 1, 3, 5 and 7. In each of them, you notice that it looks for :

The starting symbol of a well-matched block, between two square brackets, so [(], [{], [[] or [<], followed by, either :

Any single allowed character, different of these four couples of symbols, so the characters ](){}<>[, inside a negative class[^....] of characters, so the regex [^](){}<>[]

Any other well-matched block ( (...), {...}, [...] or <...> ) , thanks to a recursive call to one of the groups 1, 3, 5 or 7, as a subroutine, so the regex (?1)|(?3)|(?5)|(?7)

These two syntaxes may be present or not, as many times as necessary, in case of juxtaposed chars/blocks, with the *quantifier

The ending symbol of a well-matched block, between two square brackets too, so [)], [}], []] or [>]

I didn’t add < and > to the delimiters because in the programming languages I use most often, they are not delimiters, they are less-than and greater-than.

Yes, I decided not to box in [], etal, because of the triviality – it is more annoying to see the box than to not see it in this case.

The code was designed to consider only what is in the current viewing area, i.e., both the opening and closing delimiter need to be seen by the user. This is mainly for performance reasons (consider a huge file with the matching delimiters at the very start and very end of the file). If one wants to match delimiters that have longer distance between them, the native Notepad++ brace-matching commands can be used.