Syntax Highlighting

The status bar names the language. Settings lists every built-in language and what triggers it.

The status bar names the language the file was detected as. Go on main.go. Swift on stream.swift.

Marlin editing Swift
stream.swift. The status bar reads Swift, UTF-8, LF, Spaces: 4. The inspector lists the types and functions in the file.

High-Throughput Grammar Engine

Detection is by filename and extension. A shebang can still choose Python, Zig, JavaScript, or Shell. Settings lists every built-in language and the extensions that trigger it. A grammar you add is one JSON file in the Grammars folder, patterns only, and it never runs code.

Marlin dark theme on a Rust file
main.rs in the dark Marlin theme. Keywords, types, strings, and macros each take their own role colour.

Supported Language Ecosystems

The built-in names include Swift, Python, Zig, Rust, Go, C, C++, Objective-C, Astro, JavaScript, TypeScript, Svelte, Vue, GLSL, WGSL, Java, Kotlin, C#, JSON, YAML, TOML, SQL, Shell, Dockerfile, Makefile, and Log. Settings is where the full catalog, with each trigger, is listed.

Marlin Languages settings
Settings, Languages. The built-in catalogue lists 54 languages and the file names and extensions that trigger each one.

Interactive Syntax Switcher Popover

The language name sits on the status bar, between the column and the encoding. On the Swift shot it reads Swift.

Marlin Editor settings
Settings, Editor. Per-language overrides inherit from the global values, with a live preview above the typography controls.