Customizing Structural Highlighting in Delphi

It’s possible that Structural Highlighting is Castalia’s most popular feature. It’s certainly one of the first things that you notice when you try Castalia for the first time, and one of the things that people tell me over and over again they love.

Of course, code formatting can be quite a touchy subject, and by extension, the “best” way to highlight that formatting has been the subject of more than a few debates over the years. Fortunately, the advanced syntax highlighting that Castalia adds to the Delphi IDE is versatile and easy to customize.

To customize Structural Highlighting in your Delphi editor, open the Castalia menu and choose “Castalia Options….” Drill down the options tree through Castalia Options | Editor | Smart Highlighting | Structural Highlighting, and you’ll find the structural highlighting options pane.

The first checkbox, “Highlight Code Structure,” turns structural highlighting on and off. If, for some reason, you don’t want to see the structural highlighting lines, this is where to turn them off and on.

Next is the checkbox for “Mark Hanging Blocks.” This controls what happens if the beginning and end of a structural statement aren’t aligned vertically in the code editor. You can see this with the example given in the options window.

Notice that there are two begin/end pairs in the example. The outer one, marked in orange, has the begin/end aligned vertically, but the inner one, marked in purple, does not. If “Mark Hanging Blocks” is checked, the structural highlighting lines will always be drawn to align vertically with the “end” keyword.

Here’s what it looks like if “Mark Hanging Blocks” is turned off.

In this case, Castalia draws the structural lines more literally, exactly marking the “begin” and “end,” and only drawing the connecting line if they are vertically aligned (otherwise you would have diagonal lines running through your code, making it harder to read, not easier).

So, if you’re one who aligns your begin/end pairs vertically, this option doesn’t really matter for you – Castalia will behave the same way whether it’s on or off. On the other hand, if you’re one who puts “begin” on the same line as your conditional statement (which is very common with curly-brace languages like C and Java), you’ll want to decide how you prefer to see the structure. Personally, I think having hanging blocks ON is better, but that’s just my opinion.

The final set of options is the color buttons. Castalia’s Structural Highlighting uses four colors (if your nested structure is more than four levels deep, the colors will be reused again in the same order – it’s a simple Color = StructuralDepth mod 4).

I think the default colors are nice, but not everybody likes them, especially people who don’t use a white background as their code editor. You can customize the colors by clicking the color button. You’ll get a standard Delphi color picker dialog, and you can customize your four colors to your liking.

Tomorrow, I’ll write about customizing Castalia’s Parenthesis Matching for the Delphi IDE, and why it works differently (and is better) than the parenthesis matching built in to the Delphi editor. Then, later this week, I’ll write about Flow Control Highlighting.

For now, have fun customizing your Structural Highlighting. If you don’t already have Castalia installed, come download a free trial.

2 Responses to Customizing Structural Highlighting in Delphi

  1. Fran├žois September 26, 2011 at 1:26 pm #

    “(otherwise you would have diagonal lines running through your code, making it harder to read, not easier”

    IMO, you could draw an horizontal line to the left (under the “if I = 1 then”) until aligned then a vertical line down to the end of block.
    It would partition the code properly, as well as when “begin” and “end” are aligned.

    I’m playing Devil’s advocate here, as I prefer aligning the “if” with the “end” in a case like that anyway: I like code constructs of the kind “if/endif” or “while/endwhile”, which is why I put the begin at the end of the “if” line.


  1. Better Parenthesis Matching in Delphi | TwoDesk Delphi Blog - September 27, 2011

    […] I wrote about configuring Structural Highlighting, one of Castalia’s advanced syntax highlighting features. Today, I want to talk about […]

For programmers, by a programmer

Hi. My name is Jacob, and I'm the creator of Castalia.

I starting programming in 1986, learning Lightspeed Pascal on a Mac Classic. Today, I'm a professional programmer, teacher, and entrepreneur.

I have a Master's Degree in Computer Science, and I still love Pascal and Delphi.

I believe that writing code is the heart and soul of software development, and I love helping programmers write code more effectively.