Skip to main content

Gateway Language Server

Flint ships a full language server for Ignition Jython scripts, backed by your live gateway. It knows the actual system.* API exposed by your gateway's installed modules and indexes your project's script library, so completion and navigation reflect your real environment — not a generic Python install.

The language server runs by default whenever a gateway with an API token is selected. It does not require a running Designer.

Prerequisites

Needs a configured gateway with an API token in flint.config.json. The Flint Designer Bridge module must be installed on the gateway. A running Designer is not required. Without a selected gateway and token, the language server stays dormant and Flint falls back to offline completion.

How it works

The extension bundles the flint-lsp-proxy language server — there is nothing to install. When you select a gateway, the extension launches the proxy over stdio; the proxy forwards language requests to the Flint Designer Bridge module running on the gateway, which parses your scripts with Ignition's own Jython (Python 2.7) parser.

Setup

  1. Install the Flint Designer Bridge module on your gateway (see Module Installation).
  2. Add the gateway to flint.config.json and point modules.project-scan-endpoint.apiTokenFilePath at a file containing an API token:
{
"gateways": [
{
"id": "my-gateway",
"host": "gateway.example.com",
"port": 8043,
"ssl": true,
"modules": {
"project-scan-endpoint": {
"apiTokenFilePath": "~/.flint/tokens/my-gateway-token.json"
}
}
}
]
}
  1. Select the gateway in the Flint status bar. The language server starts automatically.

Getting a token

The token type depends on your Ignition version:

Ignition versionToken typeHow to get it
8.1.44+Flint bearer tokenAuto-generated by the Flint module. The gateway writes a token file to <dataDir>/modules/flint/gateway/api-token.json on startup — copy it to your workstation, or set the FLINT_GATEWAY_API_TOKEN environment variable on the gateway to supply your own.
8.3.1+Native gateway API tokenCreate an API token in the gateway web interface (Config > Security > API Tokens) and save it to a file referenced by apiTokenFilePath.

The extension detects the gateway version and sends the token with the matching scheme automatically.

Language features

FeatureBehavior
CompletionPosition-aware. system.* functions from the live gateway's ScriptManager, project script modules, local variables, and Python keywords.
HoverFunction signatures (parameter names) as markdown.
Go to definitionJumps within a file and across files into project script modules.
Find referencesIntra-file, best-effort identifier matching.
DiagnosticsJython syntax errors, reported as you type (source flint-jython).
SymbolsDocument symbols (outline) and workspace symbol search.

If your gateway hosts a single project, the language server selects it automatically; otherwise it uses the project associated with your selected gateway and workspace.

The server restarts automatically when you switch gateways or projects, or change the relevant configuration — no reload required.

Precision limits
  • Hover shows function signatures only — no docstrings, no parameter types or defaults, and no hover for system.* functions.
  • Diagnostics are syntax-only. Undefined names, type errors, and other semantic problems are not reported.
  • Find references is best-effort and limited to the current file.
  • No completion for Java classes, tag paths, Perspective style classes, or view paths.

Settings

SettingDefaultPurpose
flint.languageServer.enabledtrueTurns the gateway language server on or off. When off, Flint uses the offline/Designer completion providers instead.
flint.languageServer.proxyPath(bundled)Advanced override: absolute path to an external flint-lsp-proxy executable. Leave unset to use the bundled server.
note

Disabling the language server removes hover, go-to-definition, references, and diagnostics — those features exist only on this path. The fallback providers offer completion only. See Completion for how the fallback sources work.