Completion in a template comes from two servers. The ISML server completes the markup: tags, attributes, attribute values, template paths, custom tags, closing tags, and character entities. Inside ${ … } expressions and <isscript> blocks, the scripting engine completes the code with the shared SFCC type model
Tag completion
Type < or <is to list the 32 standard ISML tags, such as isif, iselse, iselseif, isloop, isinclude, isset, isprint, isdecorate, iscomponent, iscontent, isslot, iscache, ismodule, and isscript, together with the HTML tags and your custom tags. The details pane shows each tag's documentation
Attribute and value completion
Inside a tag, its attributes complete with their documentation. Accepting one inserts the attribute with an empty value and puts the caret between the quotes:
| Tag | Attributes offered |
|---|---|
<isinclude> | template, url, sf-toolkit |
<isloop> | items, iterator, alias, var, status, begin, end, step |
<isset> | name, value, scope |
<isprint> | value, encoding, timezone, padding, style, formatter |
Attribute values complete where the tag documents a value set: session, request, and page for scope on <isset>, the encodings and the SITE, INSTANCE, and utc time zones on <isprint>, and on or off for sf-toolkit on <isinclude>
Template path completion
A template="…" value on any tag, such as <isinclude>, <isdecorate>, or <ismodule>, completes against the .isml templates indexed across all cartridges. Each suggestion shows the path, such as checkout/billing.isml, with its locale folder as the detail. Accepting it inserts the path without .isml, and adds the quotes when the value has none. A path that exists in several cartridges appears once
Custom tag completion
Tags declared with <ismodule> join the tag list as is plus their name, such as isproducttile. Inside the tag, the attributes from its declaration complete, skipping the ones already on the tag. See Custom tags and modules for how declarations are found
Closing tags
After <, the list starts with the closing tag of the innermost open element, for example /isloop inside an unclosed <isloop>. Accepting it inserts </isloop>, and when the line is indented differently from the start tag, the closing tag moves to the start tag's indentation. Typing </ offers the same suggestion, but VS Code's HTML auto-insert usually completes the tag first, see Editing aids
Character entities
In text and attribute values, type & and a few letters to complete HTML character entities such as ©, , or €. The details of each suggestion name the character, for example "Character entity representing '©'"
Expression and script completion
Inside ${ … } and <isscript>, the scripting engine completes dw.* members, pdict, Resource, URLUtils, variables from <isset> and script blocks, require() paths, and recognized route and resource strings. The scripting engine answers only when the caret is inside an expression or a script block. See Scripting in ISML for what is typed, and ISML expression completion for the shared engine
<isloop> variables are declared for the expressions inside the loop. The var carries no type, so its members do not complete, while the status variable completes count, index, first, last, odd and even. See isset, loops, and status variables
Trigger characters
Completion opens as you type and again on <, space, :, ., {, /, ", and '. The extension turns on quick suggestions inside strings for ISML, so attribute values and template paths appear while you type between quotes. Press Ctrl+Space to open the list anywhere