Change log
Notable changes to the xDBML language support extension.
The format is based on Keep a Changelog.
[0.7.2]
Follows xDBML 0.7.2.
Added
- Source-to-target mapping:
transformation,dialectandgrainare colored as setting keys, assource_databaseandsource_queryalready are.
[0.7.1]
Follows xDBML 0.7.1.
Added
EntityPartialandEntityGroup: colored as declaration keywords, as their DBML aliasesTablePartialandTableGroupare.- Diagram view categories:
EntitiesandEntityGroupsare colored as declaration keywords before{, asTablesandTableGroupsare. Metadata EntityGroup: the kind is colored withMetadata.x-custom properties: a quoted setting key with thex-prefix,"x-hackolade-id": '...', takes the color of anx_custom property in the settings brackets.
[0.7.0]
Follows xDBML 0.7, whose DBML baseline moves from 3.13.6 to 10.3.1. The constructs DBML added in between take the colors of the constructs they resemble. Versions 0.6.6 and 0.6.7 of the language changed no highlighting, so the extension skips them.
Added
Metadatablocks:Metadataand the kind that follows it (Table,Column,Entity,View, ...) are colored as declaration keywords, only together, so an entity or a field may still be namedmetadata.- Sticky notes:
Noteis colored as a keyword before the name of a sticky note followed by settings brackets, a qualified name, or the colon form. - Data lineage:
Depis colored as a declaration keyword at the start of a line before:,{,[or a name, so a field may still be nameddep;depis colored as a setting key in brackets;->and<-are colored as the arrows of a dependency. - Optional marks: a relationship operator and its
?marks (>?,?<,?-?) are colored as one operator. - Records:
recordstakes the block color before the(of a column list and the[of its settings as well as before{, andexamplethe color of a setting flag.
[0.6.5]
Follows xDBML 0.6.5, which defines internal definitions (spec §15.8). Version 0.6.4 of the language changed no highlighting, so the extension skips 0.6.4.
Added
definitionsblock:definitionsis colored as a block keyword when it opens the internal definitions of an entity, that is before{, asindexes,checks,constraintsandrecordsare. A field nameddefinitionskeeps the color of any other field name.
[0.6.3]
Follows xDBML 0.6.3, which defines diagram views (spec §18). Versions 0.6.2 of the language changed no highlighting, so the extension skips 0.6.2.
Added
- DiagramView categories:
Tables,Views,Containers,Schemas,TableGroups,SupertypeGroupsandNotesare colored as declaration keywords when they open a list inside aDiagramView, that is before{. An entity or a field that carries one of these names keeps its color, as with the block keywords of 0.6.0.
[0.6.1]
Follows xDBML 0.6.1, where no keyword is reserved as a field name.
Fixed
- A field named
note: a line such asnote varcharwas colored as aNotedeclaration, with its type colored as the declared name.Noteis now colored as a keyword only where it starts a note: before:or{, or before a name and{on the same line. A field namednotetakes the color of any other field name, asindexes,checks,constraintsandrecordsalready did.
0.6.0
Brings highlighting up to xDBML v0.6. The grammar is regenerated from the parser's keyword lists (parser/src/keywords.ts), so the editor colors the same words as the playground and the xdbml.org code blocks.
From this release on, the extension's version follows the xDBML version its grammar covers: 0.6.x highlights v0.6, and the patch number counts releases of the extension alone. Versions 0.4.0 and 0.5.0 are skipped; 0.3.0 was the previous release.
Added
- Block keywords:
constraints(v0.6, spec §10: an entity's primary key, unique keys and checks),indexes,checksandrecordsare colored when they open a block inside an entity body. Earlier versions left them uncolored there; a field that carries one of these names is not colored. - v0.5 supertype groups: the
SupertypeGroupdeclaration keyword and the setting keyssupertype,completeness,exclusivity,strategyandmerge(spec §12). - v0.4 relationships: the
foreign_masterflag and the setting keysconstraint_type,source_role,target_role,source_verbandtarget_verb(spec §11.10 to §11.16). - Target-native type names: 72 common types of specific targets -- Oracle
number,clob,raw; PostgreSQLserial,bytea,citext; SQL Serveruniqueidentifier,datetimeoffset; Snowflaketimestamp_ntz; BigQueryfloat64; Cassandra, Protobuf and ClickHouse integer types;geometry,geography,interval-- are colored like scalar types. Any other type name is still valid; it is simply not colored.
Changed
PUBLISH.txt, the maintainers' notes, no longer ships inside the package.- The README links to the current specification instead of v0.1.
0.3.0
Adds a one-click bridge from the editor to the playground.
Added
- Open in Playground command (
xDBML: Open in Playground). It opens the current.xdbmlfile -- or the current selection -- in the hosted playground at xdbml.org with the schema already loaded, so there is no copy and paste. Available from a button in the editor title bar, the editor right-click menu, and the command palette. The link uses the same lz-string#s=share format as the renderer and the HTTP render API, so it round-trips exactly.
Notes
- This is the extension's first release with runtime activation code. The bundle is built with esbuild at publish time (
vscode:prepublish), andlz-stringis bundled in, so the packaged extension stays self-contained.
0.2.0
Adds syntax highlighting for the constructs introduced in xDBML v0.2.
Added
- Module system keywords:
use,reuse,from,asare now highlighted with a dedicatedkeyword.control.module.xdbmlscope. These appear in v0.2'suse/reuse ... from './path' { ... }directives (spec §26). Theaskeyword also serves DBML table- aliasing (Table users as u) under the same scope. - Entity-level
checksblock: thecheckskeyword (alongside the existingindexes) is recognized as a setting key. v0.2 §10 introduces it as an entity-level block of multi-column constraint expressions. cloned_atdirective setting: the v0.2[cloned_at: '...']metadata onuse/reusedirectives is recognized as a setting key.inactiveflag: the v0.2[inactive]flag on Ref declarations (visualization-only deactivation, spec §11.9) is now categorized as a setting flag rather than a setting key, matching its no-value syntax. This is a minor scope correction; visually identical in most themes.
Notes
- Color settings on Ref and TableGroup (
[color: '#...']) were already highlighted by the existing setting-key vocabulary; no change needed. - v0.2 also adds scalar Named Types (
Type Email varchar [...], spec §14.7). The TextMate grammar already highlightsTypeas a declaration keyword andvarcharas a scalar type, so no new pattern is required -- the scalar form is highlighted via existing rules.
0.1.1
Maintenance release. See git history.
0.1.0
Initial release.
Added
- TextMate grammar for xDBML covering declaration keywords (Project, Container, Schema, Database, Keyspace, Namespace, Dataset, Bucket, Table, Entity, Collection, Record, Type, Edge, View, Enum, Ref, Note, TablePartial, TableGroup, DiagramView).
- Structural type keywords (object, struct, array, list, map, dict, dictionary, set, json, jsonb, variant) and polymorphism keywords (union, oneOf, anyOf, allOf).
- Scalar type names (51) and BSON type names (9).
- Setting flags (pk, primary, key, unique, null, not, required, increment) and setting keys (52 including AI-readiness, validation, and referential-action keys).
- Custom
x_*extension-point property highlighting. - Single and triple-quoted string literals, backtick expression literals, double-quoted identifiers, numeric and boolean literals, null constants.
- Line and block comments.
- Cardinality operators (
>,<,-,<>) in Ref declarations. - Language configuration: comment toggling, bracket matching, auto-closing pairs, block-comment continuation, fold regions via
// #regionmarkers. - Language icon (visible in the status bar and language picker).
- File association for
.xdbml.