Professional Clarion language support for Visual Studio Code with intelligent code navigation, IntelliSense, and build integration.
- 5-Minute Quick Start - Get up and running fast
- Common Tasks - Everyday workflows made easy
- Installation Guide - Detailed setup instructions
- Full Changelog - See what's new
- Report Issues - Found a bug?
Full language support for Clarion code, basic support for templates.
- Clarion files (.clw, .inc) - Complete syntax highlighting and IntelliSense
- Template files (.tpl, .tpw) - Syntax highlighting with 100+ template keywords
- Code folding for structures and template blocks
- Context-aware coloring for Clarion code
- Note: Template files have syntax highlighting only (no IntelliSense/navigation)
- Learn more about Code Editing →
Get instant parameter hints and documentation - works immediately, no solution needed!
- 310 built-in functions with parameter hints and descriptions
- Method overload support — overloads narrowed by argument type (e.g.
OPEN(Window)shows only WINDOW signatures) - Hover documentation for all symbols — procedures, classes, variables, attributes, built-ins
- Context-aware hover —
HIDE,DISABLE,TYPEshow attribute or statement usage depending on context - Hover for PROP:/PROPPRINT: runtime properties — descriptions from Clarion 11.1 docs
- Hover for EVENT: equates — category, description, and usage example
- Signature help for class methods including inherited members
- Learn more about Signature Help →
Type SELF. or MyVar. for context-aware member suggestions. Type PROP:, PROPPRINT:, or EVENT: for documented equate completions.
- Resolves
SELF.,PARENT.,MyVar., orClassName.to the correct class - Full inheritance walk — shows methods and properties from parent classes
- Access control aware —
PRIVATE/PROTECTED/PUBLICscoping enforced - Each overload shown as a distinct entry with parameter signatures
- Chained expressions (
SELF.Order.) resolve intermediate types - PROP:/PROPPRINT: completions with description and read-only badge
- EVENT: completions with category label (Field-Specific / Field-Independent / DDE)
- Learn more about Navigation →
Write code faster with 50+ smart snippets - works immediately!
- Structure templates (IF, LOOP, CASE, etc.)
- Variable declaration shortcuts
- Procedure and method templates
- Learn more about Snippets →
Open any Clarion solution - just open the folder.
- Auto-detects
.slnfiles in folder - Recent solutions list for quick access
- No workspace files needed
- Learn more about Solution Management →
Jump to definitions, find implementations, and explore references — works in same file immediately, cross-file with solution.
- Press F12 to go to definition (same file: no solution needed!)
- Press Ctrl+F12 to go to implementation
- Press Shift+F12 for Find All References — scope-aware across all project files, overload-aware (only the matching overload's sites), routine-aware
- Press F2 to Rename Symbol — renames across the entire workspace in one step
- Reference-count CodeLens — an exact
N referencescount above every procedure, method, class, and routine; click to see them (large solutions briefly show a~estimate while the exact count computes) - Routines are first-class symbols — hover, F12, Go-to-Implementation, references, and CodeLens all work on
ROUTINElabels andDOsites, including generated::names likeMenu::MENUBAR1 - Module-callout procedures — references from an implementation reach every module whose MAP includes the callout INC (the generated
MODULE('impl.clw')+ INCLUDE pattern) - Overload resolution by argument types — F12, Ctrl+F12, hover, and references pick the overload matching the call's arguments (typed variables, members, EQUATEs, implicit variables,
PRE:Fieldarguments) - Document Highlight — scope-aware occurrence highlighting, including procedure call sites
- Workspace Symbol Search (
Ctrl+T) — search for any procedure, class, or label across all solution files - Hover for documentation — declaration location, class/interface context, type info, resolved INCLUDE/MODULE/MEMBER file paths
- Chained navigation:
SELF.Order.RangeList.Init— hover, F12, Ctrl+F12, and references resolve through CLASS, QUEUE, and GROUP type chains - SELF/PARENT properties: F12 on
SELF.Listnavigates to the class member declaration - Typed variable members: F12/Ctrl+F12/hover on
obj.Method()whereobjis any typed variable - INTERFACE support: hover, F12, Ctrl+F12, and references for interface methods, IMPLEMENTS(), and 3-part
Class.Interface.Methodimplementations - CLASS type names: F12 and Find All References work on type names in parameter and variable declarations
- Cross-file navigation requires solution
- Learn more about Navigation →
CodeRush-inspired refactors on Ctrl+. — plus quick fixes attached to diagnostics.
- Surround With… — wrap selected statements in
IF…END,LOOP/LOOP WHILE/LOOP UNTIL…END, orCASE…OF…END - Negate Condition — flip the logical sense of an
IF/ELSIF/LOOP WHILE/LOOP UNTILcondition - Flip IF/ELSE — negate the condition and swap the branches of a block-form
IF…ELSE…END - Introduce EQUATE — extract a magic literal to a named
EQUATE, choosing which data section it lives in (routine / local / module / global — even cross-file into the PROGRAM) - Create routine from
DO— an unresolvedDO SomeRoutineoffers to scaffold theROUTINEskeleton in the right scope - Add missing INCLUDE / project DefineConstants — quick fixes on the corresponding diagnostics
- Learn more about Code Editing →
Generate applications directly from VS Code.
- Right-click to build from Solution View
- Multiple build configurations (Debug/Release) — active config auto-detected from
.sln.cache - Projects sorted by build order (dependency-first) in Solution View
- Live build output
- Learn more about Building →
Catch errors as you type.
- Unterminated structures — including window sub-structures (
WINDOW,SHEET,TAB,OLE,MENU, etc.) - Missing RETURN statements
- FILE validation (DRIVER, RECORD)
- Missing INCLUDE — warns when a variable's class type is defined in an
.incnot included in the file; code action inserts theINCLUDEautomatically - Missing DefineConstants — warns when a class's required
Link()/DLL()constants are absent from the.cwproj; code action adds them with a QuickPick for static vs DLL mode - Discarded return values — a value-returning (non-
PROC) procedure or method called as a statement, includingSELF./PARENT.call sites - Literal passed by reference — a literal handed to a
*TYPE(or complex-type) parameter, which needs an addressable variable - Undeclared variables (opt-out) — names that resolve to no declaration through the full scope model, cross-file aware
- Missing implementations / indistinguishable prototypes — MAP declarations without bodies, and overloads a call could never disambiguate
- Character-set validation that respects all Windows ANSI code pages (1250–1258) — national letters pass clean, genuine contamination (emoji, box-drawing) is flagged
- Code inside unconditional
OMITblocks is excluded from diagnostics and reference counts (rename still updates it — other build configurations may compile it) - Learn more about Diagnostics →
Built and measured against real-world solutions (40 projects / 3,000+ source files).
- Solution ready in ~2s, extension interactive in ~5s on large solutions
- All indexes (structure declarations, file relationships, reference counts) persist across sessions — warm starts re-scan only files that changed
- Background indexing is time-sliced and never blocks typing, hover, or navigation
- Project-file regeneration (all
.cwprojfiles touched) coalesces into a single refresh - Opt-in performance tracing (
clarion.log.performance.enabled) produces a full diagnostic timeline for support
Productivity features to write code faster.
- 50+ code snippets
- Paste as Clarion String
- Add Method Implementation
- Create New Class wizard
- Learn more about Code Editing →
- Visual Studio Code (latest version)
- Clarion (for build features)
- Open VS Code
- Press
Ctrl+Shift+X - Search for "Clarion Extensions"
- Click Install
Detailed installation instructions →
- Quick Start Guide - 5 minutes to your first solution
- Common Tasks - How do I...?
- Installation Guide - Detailed setup
- Navigation Features - F12, Ctrl+F12, hover tooltips
- Signature Help - Parameter hints and documentation
- Solution Management - Working with solutions
- Diagnostics & Validation - Error detection
- Code Editing Tools - Snippets, commands, wizards
- All Commands - Complete command reference
- All Settings - Configuration options
- Snippet Reference - Code snippet cheat sheet
- Clarion Language Reference - Language syntax (wiki)
The ANTLR4 grammar / folding-provider exploration (2025–Jan 2026) was split out to the archived repo Clarion-ANTLR-Grammar; tag antlr-experiment marks the last commit here that carried antlr-grammar/.
1.0.2 is a correctness release. The theme running through it is silent failure: several ways a solution could load in a degraded state — wrong build configuration, unresolvable redirection paths, source files missing from the index — looked identical to a healthy load, so features simply returned nothing and the extension read as broken rather than misconfigured. Those now report themselves. Alongside that is a run of hover, navigation and diagnostic fixes, many contributed by @geircodes.
- Degraded solutions are visible: source files that fail to resolve are counted and named instead of being silently dropped from the file-relationship graph; redirection macros that expand to nothing say so rather than leaving a dead search path; re-opening a solution from the recent list now validates the stored build configuration instead of adopting a stale one.
- Redirection:
%THISDIR%,%WinUserApplicationData%and%WinCommonApplicationData%are implemented — previously they were left in the path as literal text, so every directory on that line failed to resolve. - Command Palette: every command now carries a
Clarioncategory, so typing "clarion" finds them — including how to open a solution, which was previously reachable only from the Clarion Tools sidebar. - Navigation & hover: a bare local
CLASSused as its own instance now resolves for hover, F12, Ctrl+F12, completion and signature help; colon-bearing labels no longer truncate and kill navigation; a local CLASS's indentedENDno longer swallows the next procedure; GROUP/QUEUE/CLASS field declarations resolve to themselves; 61 built-ins that hovered as "undefined" now show their signatures. - Diagnostics: attribute and built-in names that collide with your own variables no longer hijack the hover card or the warning; discarded-return warnings survive a trailing comment; false "missing END" on a WINDOW with a continuation-line attribute is fixed.
- Performance: hovering an undeclared bare word in a large generated module no longer freezes for ~10s (10.5s → 13ms on the 40-project test solution), and Clarion's predefined compiler flags (
DLL_MODE,_DEBUG_,_USTRING_, …) now hover properly instead of being flagged as undeclared.
See the full changelog for the complete list →
A stability release on top of the 1.0 overhaul — more startup and hover performance work verified on the real 40-project / 3,000-file solution, plus a batch of hover, completion, and diagnostic correctness fixes. Startup validators stopped freezing the editor in multi-second blocks, F12 on a built-in became instant instead of a ~24s cold walk, and .app global data stopped being falsely flagged "not declared" in generated MEMBER modules.
The 1.0 release was the largest update yet — a ground-up performance overhaul verified on real 40-project / 3,000-file solutions: the IDE is usable seconds after opening a large solution, with all indexes persisted across sessions and no event-loop freezes. It also brought exact reference counts with routine lenses, overload-aware navigation everywhere (FAR, F12, Ctrl+F12, hover, signature help), new refactors (Surround With, Negate Condition, Flip IF/ELSE, Introduce EQUATE, Create routine from DO), new diagnostics, and an upgrade to LSP 8.x.
- GitHub Issues - Report bugs or request features
- Discussions - Ask questions, share tips
Special thanks to:
- fushnisoft - Original Clarion syntax highlighting
- The Clarion community for feedback and testing
Thanks to everyone who has helped improve the Clarion Language Extension through code, bug reports, testing, ideas, documentation and their knowledge of the Clarion language.
geircodes 💻 🐛 🤔 |
Edin Čahtarević 🐛 🤔 📓 |
ClarionLive 🐛 🤔 📓 |
Allen Zhu 💻 |
Brahn Partridge 💻 |
Mark Goldberg 🐛 |
Carlos Gutierrez 🐛 |
Dylan Vos 🐛 |
krosoftware 🐛 |
jslarveEC 🐛 |
Nardus 📖 |
Mike Hanson 🤔 |
This project follows the all-contributors specification. Contributions of any kind welcome!