Ink Language

pending

by Fables Forge

Syntax highlighting, slash commands, and outline panel for inkle's Ink scripting language (.ink files).

Updated 12d agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub

Ink Language — Obsidian Plugin

An editor plugin for inkle's Ink scripting language inside Obsidian. Open .ink files directly in your vault and get syntax highlighting, smart navigation, snippet insertion, and a structural outline panel.


image

Overview

An Obsidian community plugin that brings first-class support for inkle's Ink scripting language (.ink files) into Obsidian. The goal is to give narrative designers and writers a comfortable authoring experience without leaving Obsidian — syntax highlighting, Ctrl+Click navigation, slash-command snippet insertion, command palette actions, a structural outline panel, and configurable editor themes. You can also include Obsidian links in your Ink comments - something that's not possible with the official editor.

We built it for ourselves - all of our project notes and storyline live in a shared Obsidian vault. Now we're sharing it with the community.

Out of scope: Story playback/preview (the existing Ink Player plugin covers that and it plays nicely with our plugin - the two of them make a perfect duo).

Inspiration & Credits

This plugin is heavily inspired by Inky, inkle's official Ink editor. The two-theme system (Normal / Focus), the outline panel structure, and the overall UX philosophy directly reference Inky's design. Inky and Ink are amazing software created by inkle.

Features

Syntax Highlighting

.ink files are automatically highlighted: knots, stitches, choices, diverts, logic expressions, variables, comments, and more are all visually distinguished.

Two themes are available (switchable at any time):

  • Normal — uses your Obsidian theme's color palette, toned down relative to a typical code editor
  • Focus — only narrative text reads at full brightness; all structure, logic, and syntax recede into the background so you can concentrate on the story

Switch themes via Settings → Ink Language → Editor theme, or instantly with the command Ink: Toggle Focus Mode.

Ctrl+Click Navigation

Hold Ctrl (or Cmd on Mac) and click on any knot name, stitch name, divert target, or gather label to jump directly to its definition.

Works with:

  • Knot names (=== my_knot ===)
  • Stitch names (= my_stitch)
  • Named gather labels (- (my_label), - - (nested_label))
  • Variables and constants
  • Explicit paths (knot.stitch)

Outline Panel

Open the structural outline of your .ink file from the ribbon icon or the command Ink: Toggle Outline. The panel shows all knots, stitches, functions, and external declarations, organised hierarchically. Click any entry to jump to that line.

Snippet Insertion

Type / anywhere in an .ink file to open the snippet menu. Available snippets cover the full Ink syntax:

CategorySnippets
StructureKnot, Stitch, Function, INCLUDE
ChoicesChoice, Sticky Choice, Choice with Suppress, Labelled, Conditional, Fallback
FlowDivert, Divert to END/DONE, Tunnel, Tunnel Return, Thread, Gather, Labelled Gather, Glue
LogicVAR, CONST, TEMP, Assignment, If/Else, Switch, EXTERNAL, LIST
Varying TextSequence, Cycle, Shuffle, Once-only, Alternatives
Tags & CommentsTag, Line Comment, Block Comment, TODO

Commands

All commands are available in the Command Palette (Ctrl+P / Cmd+P):

CommandDescription
Ink: Toggle OutlineOpen or close the outline panel
Ink: Toggle Focus ModeSwitch between Normal and Focus themes
Ink: Insert KnotInsert === knot_name ===
Ink: Insert StitchInsert = stitch_name
Ink: Insert ChoiceInsert *
Ink: Insert Sticky ChoiceInsert +
Ink: Insert DivertInsert ->
Ink: Insert VariableInsert VAR variable_name = 0
Ink: Insert ConditionalInsert an if/else block
Ink: Wrap in Logic BracesWrap selection (or insert {})

Settings

Open Settings → Community Plugins → Ink Language.

SettingOptionsDescription
Editor themeNormal, FocusSyntax highlighting style
Navigation scroll positionTop, 1/4 from top, CenterWhere the target line lands after Ctrl+Click or Outline navigation

Installation

From the Community Plugin Browser

  1. Open Obsidian → Settings → Community Plugins → Browse
  2. Search for Ink Language
  3. Click Install, then Enable

Manual

  1. Download main.js, styles.css, and manifest.json from the latest release
  2. Copy them to <your vault>/.obsidian/plugins/ink-language/
  3. Enable the plugin in Settings → Community Plugins

Language Reference

This plugin supports the full Ink syntax. For language documentation see the official Ink guide.


AI Disclosure

This plugin was built using AI-assisted specs-driven development with Claude and Gemini. We use AI to build tools and automations for our narrative team, so they can spend more time crafting original stories.


Credits

Built by Fables Forge. Ink is created by inkle.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.