VSCode Language Server for struct-frame (.sf files)
- Syntax Highlighting — Full highlighting for messages, enums, primitive types, keywords, comments, field options, and string literals
- Go-to-Definition — Click on a message or enum type name to jump to its definition, including across imported files
- Autocomplete — Context-aware suggestions:
- Top-level keywords (
message,enum,package,import,option,repeated,oneof) - Field types: all primitive types plus user-defined messages and enums from the current file and its imports
- Inside
[...]: field option names (size=,max_size=,element_size=,flatten=) - After
option: option names (msgid,pkgid,variable)
- Top-level keywords (
- Hover Documentation — Hover over a type name to see its definition summary or a description of the primitive type
- Document Symbols / Outline — All messages and enums listed in the outline with their fields and enum values
struct-frame uses a protobuf-like syntax with .sf file extension:
package sensor_data;
option pkgid = 1;
import "other_file.sf";
enum SensorStatus {
OFFLINE = 0;
ONLINE = 1;
ERROR = 2;
}
message SensorReading {
option msgid = 1;
option variable = true;
SensorStatus status = 1;
float value = 2;
string name = 3 [size=16];
repeated uint8 data = 4 [max_size=200];
uint32 timestamp = 5;
}
message Container {
option msgid = 2;
SensorReading reading = 1 [flatten=true];
}
Primitive types: int8, int16, int32, int64, uint8, uint16, uint32, uint64, float, double, bool, string
Field options (in [...]): size, max_size, element_size, flatten
Message options: msgid, pkgid, variable
npm install
cd client && npm install
cd ../server && npm install
cd ..
npm run compileOpen the project in VSCode and press F5 to launch the Extension Development Host.