Language support for UNIC, the Universal
Configuration Format, in Visual Studio Code. The extension works with
*.unic files and does not require Go or a separately installed CLI.
- Syntax highlighting for fields, attributes, lists, maps, strings, comments, booleans, and numbers.
- Live syntax diagnostics for malformed delimiters, unterminated strings, missing field terminators, and invalid map entries.
- Canonical document formatting: four-space indentation, normalized whitespace, safe string quoting, and preserved comments. Invalid documents are not modified by the formatter.
- Snippets for fields, blocks, blocks with attributes, lists, maps, comments, and starter documents.
- English and Russian extension metadata.
Semantic validation against an application-specific schema or Go structs is intentionally outside the scope of this extension.
server web 80 { # public server
host '127.0.0.1';
tags [api, 'public web'];
credentials (user, admin, password, secret);
}
Use Format Document in VS Code to format a valid UNIC document.
UNIC is a text file containing fields, blocks, lists, and maps. Basic rules:
| Construct | Example | Description |
|---|---|---|
| Field | key value; |
Assigns a scalar value (string, number, boolean). |
| Block | key { field1 val1; field2 val2; } |
Groups fields (similar to a struct). |
| List | key [val1, val2, val3]; |
Ordered collection of values. |
| Map | key (key1, val1, key2, val2); |
Key‑value pairs (keys are always strings). |
| Attributes | key attr1 attr2 { ... } |
Values before an opening block brace become struct attributes. |
To avoid conflicts with system characters ({}[]();,#), spaces, quotes, or line breaks, the following rules apply:
- If the string contains
",{,},[,],(,),#,;,,or spaces – enclose it in single quotes:'hello "world"'. - If the string contains
',{,},[,],(,),#,;,,or spaces – enclose it in double quotes:"hello 'world'". - If the string contains both
'and"as well as special characters or line breaks – use triple backticks:```hello 'world' "foo"```.
Input must be valid UTF-8. Invalid UTF-8 sequences are rejected with a parse error.
Example:
message 'Hello, "friend"!';
path "C:\\Program Files\\App";
multiline ```first line
second line```;
- Single‑line – after
;on the same line:port 80; # standard port - Block – after
{on the same line (applies to the entire block):server { # server settings host '127.0.0.1'; }
If values are given before an opening block brace, they are interpreted as struct attributes. The attr=N tag sets the ordinal number (starting from 1).
Example:
server web 80 { host 'localhost'; }
corresponds to the struct:
package main
type Server struct {
Tag string `unic:"tag,attr=1"` // "web"
Port int `unic:"port,attr=2"` // 80
Host string `unic:"host"`
}- Create a branch from
master. - Make the change and add or update tests.
- Run
make checkandmake package. - Open a pull request describing the behavior change.
Copyright © 2026 The OSSPkg Team. Distributed under the BSD 3-Clause License.