Mica Language Support for Visual Studio Code
Compiler release 4.5 · Language support for Visual Studio Code

🔗 Homepage · 📥 Download Compiler · 📚 Tutorials · 🎬 YouTube
◈ What This Extension Provides
This extension adds Mica language support to Visual Studio Code: syntax highlighting, code
snippets, and editor integration for .mica source files. It targets Mica 4.5 — the first
public release of the compiler.
◈ Extension Features
Syntax Highlighting
Full syntax highlighting for Mica 4.5, including:
- All compilation unit keywords —
program, object, library
- All scalar types —
int8, int16, int32, int64, uint8, uint16, uint32, uint64,
float32, float64, bool, string, unicode
- Control flow —
if, then, else, for, to, downto, while, do, repeat,
until, case, of, leave
- Declarations —
var, type, const, procedure, function, record, packed, array,
set, file
- Import declarations —
imp with source identifiers
- Pointer operators —
pointer, address, value, const
- Boolean and arithmetic operators —
and, or, not, mod, odd
- Type cast —
as
- String literals with escape sequences, UTF-32 wide strings
- Unicode character literals
- Line comments (
//) and block comments ({ })
- Integer literals — decimal, hexadecimal (
0x...), and binary (0b...)
- Floating-point literals with optional scientific notation
Code Snippets
| Prefix |
Description |
program |
Complete program template |
object |
Object compilation unit template |
library |
Library compilation unit template |
procedure |
Procedure declaration |
function |
Function declaration |
functionconstptr |
Function with const pointer parameter |
impstd |
Import standard library I/O symbols |
impalias |
Import symbol with alias |
typerecord |
Record type declaration |
typepackedrecord |
Packed record type declaration |
typearray |
Array type declaration |
typepackedarray |
Packed array type declaration |
typeenum |
Enumeration type declaration |
typesubrange |
Subrange type declaration |
typeset |
Set type declaration |
typefile |
File type declaration |
if |
if...then block |
ifelse |
if...then...else block |
case |
case statement with else branch |
while |
while...do loop |
repeat |
repeat...until loop |
for |
Ascending for...to loop |
fordownto |
Descending for...downto loop |
begin |
begin...end block |
set |
Set constructor |
in |
Membership test expression |
address |
address expression |
value |
value dereference expression |
cast |
Explicit type cast with type picker |
writeln |
WriteLn call |
readln |
ReadLn call |
comment |
Line comment |
commentblock |
Block comment |
Editor Integration
- Auto-indentation — block-structured indentation aligned to
begin/end pairs
- Auto-closing pairs — parentheses, brackets, quotes, and
begin/end blocks
- Comment toggling — line and block comment toggle via standard keyboard shortcuts
- Code folding — fold procedures, functions, and
begin/end blocks
- Breakpoint support — set breakpoints on
.mica source lines for GDB-based debugging
◈ Getting Started
- Install the extension — from the
VS Code Marketplace
- Install the compiler — Ubuntu latest AMD64; download and install the
.deb package:
sudo apt install ./mica_latest_amd64.deb
mica --version
- Clone the tutorials — working examples with a pre-configured
launch.json for debugging:
git clone https://gitlab.com/mica-lang/mica-tutorials.git
code mica-tutorials
- Start coding — type a snippet prefix (e.g.
program, for, procedure) in a .mica
file and press Tab to expand it.
◈ A Mica 4.5 Program
The following program defines a subrange type for years, a record type for release data, and an
array of that record indexed over the subrange. It then populates the table and iterates over it
with a for loop — a feature introduced in Mica 4.5.
program MicaReleases;
imp
WriteLn : std;
type
Year = 2023..2026;
ReleaseInfo = record
Major : int32;
Features : int32;
end;
ReleaseTable = array[Year] of ReleaseInfo;
var
releases : ReleaseTable;
y : int32;
begin
releases[2023].Major := 1;
releases[2023].Features := 12;
releases[2024].Major := 2;
releases[2024].Features := 31;
releases[2025].Major := 3;
releases[2025].Features := 47;
releases[2026].Major := 4;
releases[2026].Features := 68;
WriteLn("Year Major Features");
for y := 2023 to 2026 do
WriteLn(" %d v%d %d", y, releases[y].Major, releases[y].Features);
end.
Type program and press Tab to expand the program template. Type typesubrange, typerecord,
typearray, and for to expand the corresponding snippets. The tutorials repository contains
thirteen complete examples covering the full 4.5 language surface.
◈ Release Notes
2.4.2 — March 2026
- Removed issue-reporting links and wording from the published extension metadata and README
2.4.1 — March 2026
- README correction for the release example:
ReleaseTable now uses array[Year] of ReleaseInfo
2.4.0 — March 2026
- Mica 4.5 support — syntax highlighting and snippets for
for/downto, repeat...until,
case, and leave
- New snippets —
for, fordownto, repeat, case, functionconstptr, typerecord,
typepackedrecord, typearray, typepackedarray, typeenum, typesubrange, typeset,
impstd, impalias, set, in, address, value, begin, comment, commentblock
- Updated description — aligned to compiler release 4.5
2.3.3 — January 2026
- Hyperlink corrections for Mica compiler release 4 to latest release
2.3.2 — December 2025
- Hyperlink corrections and wording improvements
2.3.0 — December 2025
- Repository migrated to GitLab; all links updated
2.2.0 — December 2025
- Improved README; added YouTube channel and compiler download links
2.1.0 — December 2025
- New extension icon; snippet improvements and bug fixes
2.0.0 — November 2025
- Complete rewrite with comprehensive language support: all primitive types, logical operators,
type casting, string and Unicode literals, escape sequences, code snippets, smart indentation,
and auto-closing pairs
1.0.0 — Initial Release
- Basic syntax highlighting and language configuration
◈ License
This extension is released under the MIT License. The Mica compiler uses a separate
license — see mica-dev.com for details.
| |