DEV Community

Cover image for Styling code syntax in Zed
Jake Carpenter
Jake Carpenter

Posted on • Originally published at jakecarpenter.dev on

1

Styling code syntax in Zed

Like VS Code, Zed lets you customize font styling for your code and syntax elements, such as italicizing keywords.

What does that look like?

Here's an example of a FizzBuzz implementation:



function printFizzBuzz(iterations: number) {
  for (let i = 1; i <= iterations; i++) {
    console.log(`${i}: ${getFizzBuzzAnswer(i)}`)
  }
}

// Returns the FizzBuzz string for the input integer.
function getFizzBuzzAnswer(value: number) {
  const isFizz = value % 3 === 0
  const isBuzz = value % 5 === 0

  if (isFizz && isBuzz) return "FizzBuzz"
  if (isFizz) return "Fizz"
  if (isBuzz) return "Buzz"
  return value.toString();
}


Enter fullscreen mode Exit fullscreen mode

Zed's default syntax highlighting

The image above shows Zed's default color syntax highlighting for keywords, variables, and types. You can enhance it by applying font weight and italics to specific elements.

Customizing syntax styles

To customize syntax styles, use the experimental.theme_overrides.syntax setting. Open up Zed's settings (CMD + , or CTRL + ,) and add or modify this setting. Let's start by applying a semibold weight to keywords:



{
  "experimental.theme_overrides": {
    "syntax": {
      "keyword": {
        "font_weight": 600
      }
    }
  }
}


Enter fullscreen mode Exit fullscreen mode

Once saved, we can immediately see a change in the styling of the keywords:

Comparing keyword syntax styling in Zed

You can also italicize comments and function names, or override the color of elements



{
  "experimental.theme_overrides": {
    "syntax": {
      // ...
      "function": {
        "font_style": "italic"
      },
      "comment": {
        "font_style": "italic",
        "font_weight": 600
      },
      "type": {
        "font_weight": 600
      },
      "punctuation.bracket": {
        "font_weight": 100
      },
      "string": {
        "color": "#ff00b0"
      }
    }
  }
}


Enter fullscreen mode Exit fullscreen mode

Additional syntax examples

Supported customizations

A list of the tokens supported for highlighting can be found in the Zed Language extensions documentation.

You can customize the following attributes for each of them, although, there appear to be more coming locked behind feature flags currently:



{
  "font_style": "normal" | "italic" | "oblique" | null,
  "font_weight": 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | null,
  "color": "#",
  "background_color": "#"
}


Enter fullscreen mode Exit fullscreen mode

It would also be nice to have the ability to customize the font family. Keep an eye on this GitHub issue for that feature.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay