Skip to main content
Version: 0.18.0

Syntax Highlighting

The Concord IntelliJ Plugin goes beyond standard YAML highlighting. It understands the structure and semantics of your Concord files, applying specific colors to different parts of the flow to improve readability.

This helps you instantly distinguish between a flow name, a step keyword, a variable expression, and a regular string.

Semantic Coloring

The plugin identifies and highlights the following elements distinctly:

1. Structural Elements

Top-level sections like flows, forms, triggers, configuration, and publicFlows are highlighted as keywords, making the high-level structure of the file obvious.

2. Flow Definitions & Calls

  • Definitions: When you define a flow (e.g., myFlow:), it is highlighted as a flow declaration (function-like construct).
  • Calls: When you use the call step, the target flow name is highlighted, making it easy to spot where execution jumps to another flow.

3. Steps & Keywords

Built-in steps (log, if, switch, return, throw, etc.) and task names are highlighted differently from regular YAML keys. This separates the "logic" from the "data".

4. Expressions

Concord expressions ${...} are highlighted as code injections. This is crucial for spotting variables embedded inside strings.

5. Flow Documentation

Structured flow documentation blocks are recognized and highlighted as documentation, with specific colors for in/out parameters, description text.

Customizing Colors

You can fully customize the color scheme to match your preferences or accessibility needs.

  1. Press CtrlAltS to open Settings
  2. Go to Editor | Color Scheme | Concord.
  3. Click on the element you want to change in the preview pane.
tip

The plugin comes with built-in defaults that adapt to both Light and Dark IDE themes.

Example

Here is how the highlighter interprets different elements:

configuration:
runtime: concord-v2

flows:
# A simple flow definition
default:
- log: "Starting the process..."

# 'call' keyword and flow name are distinct
- call: deployApp
in:
appName: "my-app"
out: result

- if: ${result == "success"}
then:
- log: "Deployment successful!"

##
# Deploys the application.
# in:
# appName: string, mandatory, app name
# out:
# result: string, mandatory, deployment result
##
deployApp:
- log: "Deploying ${appName}..."
  • configuration, flowsTop-level Sections
  • default, deployAppFlow Identifiers
  • log, call, ifKeywords / Steps
  • ${result == "success"}Expressions
  • ## ... ##Documentation