Overview
Use the dedicated ISML language server for scripting, completion, custom tags, navigation, diagnostics, and formatting with zero configuration.
ISML (.isml) is Salesforce B2C Commerce's server-side template language. Intellij SFCC gives it a dedicated language server - not just syntax coloring, but the same depth of intelligence you get for scripts: real scripting inside ${ … } and <isscript>, tag and attribute completion, custom-tag awareness, template navigation, validation, and formatting.
The defining feature: ISML has complete scripting support. Expressions and <isscript> blocks run through the same engine as .ds and .js, so dw.* types, pdict, loop variables, and importScript all work inside templates. See Scripting in ISML.
Explore ISML LSP
Scripting in ISML
Use full SFCC server-side scripting intelligence inside ISML expressions and isscript blocks, including dw.* types, pdict, loop variables, and importScript.
ISML Completion
Tag, attribute, attribute-value, template-path, custom-tag, and expression completion inside ISML templates
Custom Tags & Modules
How ismodule custom tags are discovered, completed, and navigated - and how to configure which files define them
Navigation
Jump from template paths and custom tags to their files, hover ISML tags for docs, and outline a template's structure and variables
Diagnostics
Template well-formedness checking and script-aware error reporting inside ISML - and the setting that toggles ISML linting
Formatting
Format ISML templates with a tag-aware indentation formatter (or legacy JS-Beautify), configurable via dedicated settings
A Real Language
The extension registers .isml as the isml language with a TextMate grammar (scope text.isml.basic) that embeds HTML, CSS, and JavaScript. Opening any .isml file gives you, with zero configuration:
- ISML tag highlighting - distinct coloring for
<isif>,<isloop>,<isinclude>,<isscript>, and the rest of the ~34 standard tags. - Expression highlighting -
${ … }expressions colored withdw.*API tokens. - Embedded HTML, CSS, and JavaScript - standard highlighting alongside ISML, including full JavaScript inside
<isscript>blocks. - Editing aids - auto-closing for
${ }and block tags (<isif>,<isloop>,<isscript>,<isdecorate>,<isobject>,<iscomment>), bracket colorization, indentation and on-enter rules, and Emmet (via the HTML language participant).
Snippets
Built-in snippets scaffold the common tags:
| Prefix | Output |
|---|---|
isif | <isif condition="${}">…</isif> |
isloop | <isloop items="${}" var="" status="">…</isloop> |
isinc | <isinclude template="" /> |
isset | <isset name="" value="" scope="page" /> |
isdec | <isdecorate template="">…</isdecorate> |
isscr | <isscript>…</isscript> |
isprint | <isprint value="${}" /> |
Customizing Syntax Colors
ISML tokens follow your theme, but you can override them in settings.json:
{
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": "entity.name.tag.isml",
"settings": { "foreground": "#C586C0" }
}
]
}
}Related
Diagnostics & Quick Fixes
Real-time, type-aware error checking for SFCC scripts, plus SFCC-specific warnings, quick fixes, and refactorings
Scripting in ISML
Use full SFCC server-side scripting intelligence inside ISML expressions and isscript blocks, including dw.* types, pdict, loop variables, and importScript.