Sublime Forum

BracketHighlighter

#9

Have you restarted after installing? It seems a good restart after first install is usually what it needs. After that you can tweak the settings and they will immediately take place. I personally use it on Windows and Linux, so I have tested it works on both.

Let me know if you are still having issues after a restart.

I have actually seen similar behavior before with other plugins…usually ones that have multiple files. I think it has to do with the fact that as each file is added during install to the ST2 path, if the other dependency has not yet been copied, that file errors out, and after the dependency is copied, the original file that failed does not reload; therefore, after install, you need to restart so that all files will be reloaded with all in place.

0 Likes

#10

Yea, seems like a restart on the Mac seemed to do the trick. Will have to try the Linux version later. Will report back.

0 Likes

#11

Nice work, loving this plugin! Is there any way to modify the color?

0 Likes

#12

Yeah, you can open up the setting file and change the color. The color is based on the scope you assign to the highlight. By default it is “entity.name.class”, but you could change it to “keyword” or any other scope in your theme.

//Scope? (Defined in theme files.) -> //Examples: (keyword/string/number) "quote_scope" : "entity.name.class", "curly_scope" : "entity.name.class", "round_scope" : "entity.name.class", "square_scope": "entity.name.class", "angle_scope" : "entity.name.class", "tag_scope" : "entity.name.class",

If you want more control of the color, you can add your own scope to your current theme file and tweak to any color you would like.

<dict> <key>name</key> <string>Bracket Tag</string> <key>scope</key> <string>bracket.tag</string> <key>settings</key> <dict> <key>foreground</key> <string>#FD971F</string> </dict> </dict> <dict> <key>name</key> <string>Bracket Curly</string> <key>scope</key> <string>bracket.curly</string> <key>settings</key> <dict> <key>foreground</key> <string>#66D9EF</string> </dict> </dict> <dict> <key>name</key> <string>Bracket Round</string> <key>scope</key> <string>bracket.round</string> <key>settings</key> <dict> <key>foreground</key> <string>#F92672</string> </dict> </dict> <dict> <key>name</key> <string>Bracket Square</string> <key>scope</key> <string>bracket.square</string> <key>settings</key> <dict> <key>foreground</key> <string>#A6E22E</string> </dict> </dict> <dict> <key>name</key> <string>Bracket Angle</string> <key>scope</key> <string>bracket.angle</string> <key>settings</key> <dict> <key>foreground</key> <string>#AE81FF</string> </dict> </dict> <dict> <key>name</key> <string>Bracket Quote</string> <key>scope</key> <string>bracket.quote</string> <key>settings</key> <dict> <key>foreground</key> <string>#FAF60A</string> </dict> </dict>

This would allow you to do this:

//Scope? (Defined in theme files.) -> //Examples: (keyword/string/number) "quote_scope" : "bracket.quote", "curly_scope" : "bracket.curly", "round_scope" : "bracket.round", "square_scope": "bracket.square", "angle_scope" : "bracket.angle", "tag_scope" : "bracket.tag",

0 Likes

#13

Thanks!

0 Likes

#14

Added Fold by Brackets, and** Swap Brackets** plugin to Bracket Highlighter.

Fold by Brackets:
Fold code block by brackets opposed to ST2’s indention method. I will include this until ST2 supports fold by brackets natively.

Swap Brackets:
Use shortcut, or command to bring up a quick panel to select a bracket type to change current matched bracket(s) to. Works with multi-select.

0 Likes

#15

Just installed this package yesterday and I love it. Helps bring a bit more color while providing a functional use.

A minor annoyance is how using the ‘solid’ outline style makes it a bit difficult to see the cursor, especially with the default bright-yellow quote-bracket color. Switching to the “outline” style mostly relieves the issue, though.

That said, great product, many thanks!

-TA

0 Likes

#16

The plugin is very configurable; I personally use underline with a bold color that stands out. The default color is based on the colors in your theme, but you can get better control of the colors; just check out the readme of the plugin, and it will tell you how to change colors, etc.

Glad you like it.

0 Likes

#17

Hi, thank you for your nice package! One question - is there a way to change color for highlight border? with option “underline” and “outline” color applies to border and it’s fine but type “solid” doesn’t give a way to define border color

grab.by/bVsO

0 Likes

#18

[quote=“rooc”]Hi, thank you for your nice package! One question - is there a way to change color for highlight border? with option “underline” and “outline” color applies to border and it’s fine but type “solid” doesn’t give a way to define border color

grab.by/bVsO[/quote]

Unfortunately no. The api doesn’t even allow me to directly set the color of the region; I instead specify a scope, and that scope must be defined in the color scheme file. This is the description from the Sublime Text 2 API (this is the command I use to create the colored regions).

[code]add_regions(key, [regions], scope, , ) None

Add a set of regions to the view. If a set of regions already exists with the given key, they will be overwritten. The scope is used to source a color to draw the regions in, it should be the name of a scope, such as “comment” or “string”. If the scope is empty, the regions won’t be drawn.
The optional icon name, if given, will draw the named icons in the gutter next to each region. The icon will be tinted using the color associated with the scope. Valid icon names are dot, circle, bookmark and cross.

The optional flags parameter is a bitwise combination of:

sublime.DRAW_EMPTY. Draw empty regions with a vertical bar. By default, they aren’t drawn at all.
sublime.HIDE_ON_MINIMAP. Don’t show the regions on the minimap.
sublime.DRAW_EMPTY_AS_OVERWRITE. Draw empty regions with a horizontal bar instead of a vertical one.
sublime.DRAW_OUTLINED. Draw regions as an outline, rather than filled in.
sublime.PERSISTENT. Save the regions in the session.
sublime.HIDDEN. Don’t draw the regions.[/code]

0 Likes

#19

hi faceless XD
i want to change the icon to mark the line in whic we have the bracket…where do u take the icons?

0 Likes

#20

[quote=“Fed03”]hi faceless XD
i want to change the icon to mark the line in whic we have the bracket…where do u take the icons?[/quote]

I add the icons via the API discussed a couple of posts up. This is from the description of the API method “add_regions”:

The optional icon name, if given, will draw the named icons in the gutter next to each region. The icon will be tinted using the color associated with the scope. Valid icon names are dot, circle, bookmark and cross.

You will notice though the cross never gets tinted, this is a problem with the API. You can maybe hunt down the icon in the theme and change it; that might work. I don’t think you add new ones because I think the API only look for those specific 4.

0 Likes

#21

Can someone explain to me how to get this plugin to work?

I’ve tried to add the following to my config file.

"quote_scope" : "bracket.quote", "curly_scope" : "bracket.curly", "round_scope" : "bracket.round", "square_scope": "bracket.square", "angle_scope" : "bracket.angle", "tag_scope" : "bracket.tag"

Using the XML data posted a couple of posts ago.

But noting get’s hilighted.

It looks like the original config (Sublime Text 2/Packages/BracketHighlighter/BracketHighlighter.sublime-settings) file isn’t read at all.
I can for example add some invalid JSON/JS and it sublime won’t raise an error.

I’m using build 2165.

Thanks.

0 Likes

#22

I can confirm this works with build 2165 and everything after. I have been running this plugin on multiple platforms on every release.

When you installed the plugin, did you restart Sublime Text? This is required.

Then you have to add the XML scopes to your currently used color scheme. And it must be done properly or the color scheme will fail to load properly.

Then copy your BracketHighlighter.sublime-settings to your Packages/User folder so it will persist after updates, and then change the scopes to the exact names used in the color scheme.

I have been using this setup for a long time.

0 Likes

#23

Ooop. I just restarted the application and everything works perfect. Thanks.

Is it possible to add the restart part to the readme?

0 Likes

#24

Generally it is a good idea to restart after any plugin install, but I will make sure it is in the readme; it was at one point, but I might have removed it by accident.

Edit: Looks like the readme does already say you may need to restart ST2.

0 Likes

#25

Version 1.1

  • Add python raw string support for quote highlighting
  • Add highlighting of brackets in strings; will work in all strings, but mainly meant for regex. True by default
  • Add support for targetting regex strings like in javascript that are scoped as strings, but are not quoted, but use '/'s. True by default

Been really wishing I could highlight the brackets in regex strings. Now you can. Supports ],{},(); will ignore them if they are escaped. Bracket plugins currently do not target brackets inside of strings. Also added javascript style regex strings and python raw strings so you can target the brackets inside them as well.


0 Likes

#26

Version 1.4

  • Account for perl regex, substitutions, and translations surrounded by “/” for string bracket matching
  • Account for regex modifiers when matching regex surrounded by “/” in javascript and perl

Realized recently javascript regex bracket matching breaks if regex has modifiers at the end: /some_regex/gi
This should be fixed.

I also added support for perl and its match, substitution, and translation variants, and also its specific modifiers. Keep in mind this will only work if the regex is surronded by "/"s. The current syntax language for Perl doesn’t handle things like this to well: s#regex#substitution#, so I am not going to even try to support such things.

Let me know if you experience issues.

0 Likes

#27

awesome^

0 Likes

#28

So for little bit now tito has been bugging me about the way BracketHighlighter kicks off bracket matching :smile: . He isn’t the only one; there have been a number of people that expressed they wished it did more instant highlighting. There were issues with instant highlighting which is why by default I had set a bothersome delay.

I have been thinking about overhauling the match management code to allow for more responsive highlighting, but I have been lazy and been working on other things. Well, tito opened up dialog with me and we started talking about how we each thought it should be done. After a lengthy discussion and some swapping of code, we have kind of melded are methods into what I feel is a much more responsive highlighting.

I will currently be running it all day today with the experimental branch to ensure that it behaves like I expect it to. If you want to try it out, the experimental branch is here: github.com/facelessuser/Bracket … provements

Basically when highlighting will be instant in most cases (considering process time due to threshold distance). But subsequent events in close succession will be noted but not processed until things slow down a bit. We will have a background thread that will take care of this. The code also throws out redundant match requests as well to only match as many times as must be done.

I am hoping in general this will be a very responsive and good compromise between the two approaches. With this new method, you will no longer specify a delay in your settings, this will all be managed internally now. You can still set your search distance threshold. On fast computers, you may increase it, on really slow computers, you may decrease it. Obviously if you crank it up way too high, you will suffer from performance issues, but this has always and will always be the case.

Hopefully this will pacify the masses.

So as long as I see no real issues in performance (which I haven’t seen yet; at least on most modern machines), this will get pushed out tonight (as long as I don’t make other plans for tonight :wink: )

Anyways, if you try out the experimental, let me know how you like it (good or bad).

So if you like it, you can thank tito for the push to get this done. I probably would have sat around on this for a bit longer :smile:.

0 Likes