After several months of work, I’ve just published version 1.0.0 of the Clarion Extension for VS Code - and this one finally earns the version number. It’s the largest update yet: 81 documented changes across 167 commits - 14 new features, 27 performance improvements, and 37 bug fixes, nearly all of them verified against real production solutions rather than toy examples.
Performance at scale
This release was built and measured against a real-world solution: 40 projects, 3,000+ source files. On that solution, 1.0.0 goes from minutes of spinners and dead clicks to solution ready in ~2 seconds, fully interactive in ~5.
- All the indexes (structure declarations, file relationships, reference counts) now persist between sessions - a warm start only re-scans files that actually changed
- Background indexing is time-sliced and never blocks typing, hover, or navigation - the multi-second freezes are gone
- When Clarion regenerates every .cwproj in your solution, the extension now does one refresh instead of forty
References you can trust
The reference-count CodeLens above every procedure, method, class - and now routine - shows an exact count, and clicking it lists the results instantly. Find All References understands things it never did before:
- Routine labels and DO sites, including generated names like
Menu::MENUBAR1 - The module-callout pattern: references from an implementation now reach every module whose MAP includes the callout INC (measured going from 2 results to 118 on real code)
- Overloads everywhere: FAR, F12, hover, and signature help all pick the overload matching the call’s actual argument types
New refactorings on Ctrl+.
A batch of CodeRush-inspired refactors:
- Surround With (IF / LOOP / CASE)
- Negate Condition
- Flip IF/ELSE
- Introduce EQUATE - with a choice of which data section it lands in
- Create Routine from an unresolved DO
Diagnostics
- New checks: discarded return values (including SELF/PARENT calls - PROC-attributed prototypes stay quiet, so generated ABC code doesn’t light up), literals passed to by-reference parameters, undeclared variables, and indistinguishable prototypes
- The invalid-character warning now respects all Windows ANSI code pages, so national letters no longer flood non-Western source files with false warnings
- Code inside unconditional OMIT blocks is now invisible to diagnostics and reference counts - while rename still updates it, because your other build configurations may compile it
Documentation
The docs were rebuilt for 1.0: the settings and commands references are now generated from the actual extension manifest, and the evergreen language material has moved to the project wiki.
If anything is slow for you
1.0.0 ships with a built-in diagnostic recorder: enable clarion.log.performance.enabled, reload, reproduce, and the Clarion Language Server output channel produces a phase-by-phase timeline you can paste into an issue. Nearly every performance fix in this release was found from exactly that log.
Full details in the changelog, install from the VS Code Marketplace.
As always, feedback, bug reports and feature suggestions are very welcome. The project continues to evolve based on real-world Clarion development, so if something can make your day easier, let me know.