All three languages ship the same IDE feature set: language server, compiler integration, GDB debugging, workbench polish, and project wizard. Modula-2 is the reference implementation; Pascal and Oberon were brought to parity in v0.46.0.
modula2-language): Coco/R-validated LSP — completion
(.-triggered, module exports, record fields, WITH fields),
hover, go-to-definition (incl. .def cross-file), references,
rename, full + range formatting, semantic tokens; client-side
header/END-name diagnostics, uppercase-while-typing, snippets,
modula2.json schema, 2 TextMate grammars.modula2-compiler): GNU gm2 backend, 6 commands
(detect/build/buildFile/clean/rebuild/run), tasks, Problems markers,
output channel, build report, editor toolbar, modula2.dialect.modula2-debug): GDB/MI adapter, type modula2.modula2-workbench): about/theme commands, menubar
menu, semantic colors, UI font preference.modula2-project): console/empty/library templates,
modula2.json validation, Sources/Definitions/Project explorer.pascal-language): 8 Coco/R dialect validators
(P2, P4, P6, standard, Turbo 3, Free Pascal, Blaise, Pascal-S);
same LSP set as Modula-2, with Unit.Name cross-unit resolution
through USES (same-directory .pas/.pp/.p), record fields
(named, Unit.Type-qualified, inline), enum literals, and
case-insensitive matching. Own format.*/uppercaseKeywords
settings, snippets, pascal.json schema, TextMate grammar.pascal-compiler): fpc + Blaise backends,
-M<dialect> flag, same 6 commands/tasks/markers/dialogs.pascal-debug): GDB/MI adapter, type pascal.pascal-workbench): same commands/menus/theming.pascal-project): console/empty/library templates
(PROGRAM/UNIT skeletons, fpc pascal.json), validation,
Sources/Project explorer, pascal.newUnit commands.oberon-language): 3 Coco/R dialect validators
(Oberon-07, Oberon-2, Ulm); same LSP set, with M.Name
resolution through alias-aware IMPORT (.Mod/.mod/.def/
.om/.od), record fields, type-bound receiver parameters,
*/- export marks (parsed, resolved, and kept attached by the
formatter), and case-sensitive matching. Own settings, snippets,
oberon.json schema, TextMate grammar.oberon-compiler): voc + ulmo backends (frontend
diagnostics decide success — ulmo's backend asserts here), same
6 commands/tasks/markers/dialogs.oberon-debug): GDB/MI adapter, type oberon.oberon-workbench): same commands/menus/theming.oberon-project): console/empty/library templates
(MODULE skeletons, voc oberon.json), validation,
Sources/Definitions/Project explorer, oberon.newModule commands.F.File) kept intact in hover/completion.