Intouch-Language README
QuickScript (Intouch-Language)
1.6.2
Modernize the Serena QuickScript adapter for Serena's external language-server registry.
Keep the adapter responsible only for .vbi/.vi registration and launching the native QuickScript server.
Intouch-Language is an open source extension for Visual Studio Code (Not official!). It provides native QuickScript language-server support for .vbi and .vi files, including formatting, diagnostics, document metadata, QuickFunction discovery, cross-file definition and references, hover, completion, and document symbols. It also includes the Intouch Dark theme.
Intouch is a programming language for AVEVA (Wonderware) SCADA Intouch Applications.
QuickScript Language Server
The extension includes a native, editor-independent QuickScript language
server for .vbi and .vi files. It provides:
- Parser-based formatting and diagnostics.
- Comment-based document metadata for QuickFunctions, Windows, Application-Script,
DataChanges, Conditions, and KeyScripts.
- Workspace QuickFunction discovery with cross-file definition and references.
- Hover, completion, and document symbols.
- Window event support for
OnShow, WhileRunning, and OnClose.
- Non-callable Application-Script, DataChange, Condition, and KeyScript symbols.
Project-specific QuickFunctions are discovered from the current workspace;
private project catalogs are not bundled with the public extension.
Example
Intouch Dark Theme
Built-in VS Code themes work with the standard TextMate scopes provided by
the extension. Intouch Dark offers stronger QuickScript differentiation when
you want more specialized contrast. The current language server provides no
semantic tokens; highlighting is currently based on the TextMate grammar.
Installation
- Prerequisite: Node.js 20 or later.
- Standard Installation:
- Install from Github:
- Copy or clone all in to:
%USERPROFILE%\.vscode\extensions\intouch-language\
cd ~/.vscode/extensions/
git clone https://github.com/vitalyruhl/intouch-language.git
- Open shell there and type
npm i
- Run:
npm run compile, or npm run watch if you want to make changes in src folder.
- You must restart VS Code after installation to apply new settings.
Snippets
- Dimb -> Dim Boolean (Discrete)
- Dimi -> Dim Integer
- Dims -> Dim String (Message)
- If# -> If code block
- Ife -> If Else code block
- for# -> add for-next-block
- log# -> Log-Debug
- cb# -> add new Code-Block
- func# -> add new empty Function
Others
Save your code as .vbi or .vi for automatic language recognition.
QuickScript language
QuickScript language boundaries and the language-server architecture are documented in
docs/language/quickscript.md and
docs/architecture/intouch-core-preparation.md.
The supported comment-based script metadata convention is documented in
docs/language/document-metadata.md.
The extension uses its own QuickScript language server for .vbi and .vi.
Formatting and semantic features share the editor-independent core tokenizer
and parser.
Enjoy!
Please report missing rules or future-requests on this link.
Todo
Known Issues / Notes
The following items are either recently resolved or planned but not yet implemented:
- Formatting uses the shared tokenizer and recoverable structure parser.
- Definition and references are document-local for variables and cross-file for
metadata-declared workspace QuickFunctions; project-wide variable indexing
and range formatting remain planned.
- NOTE: Multiline IF continuation indentation intentionally uses base + 2 spaces before THEN; THEN line stays aligned with expression by design.
- NOTE: Spacing inside string literals and single-line brace comments is preserved intentionally; only outer code regions are normalized.
What's new in Intouch-Language
1.6.0
- Add Language Server Protocol (LSP) support for VS Code formatting while preserving the existing grammar, snippets, theme, and formatter command.
V1.5.0
- Added deeper multiline IF continuation indentation (base + 2) keeping THEN line aligned with expression
- Removed spaces before semicolons outside of strings (strings remain untouched)
- Preserved all spacing inside string literals and single-line brace comments
- Added highlighting support for instance prefixes of the form
PREFIX:Variable, prefix and variable now use different scopes for theming
- General whitespace normalization (trailing whitespace removal, internal multi-space collapse outside strings/comments)
V1.1.0-V1.4.3
- Add math / intrinsic style functions for uppercasing in formatter: sqr, sin, cos, tan, atn, exp, log, int, frac, round, rnd, sqrt
- Correct some bugs in regex for syntax-highlighting
- Theme -> Add more compatibility to other languages
- Add more compatibility to other Themes (e.g. material-theme)
- Add own dark theme based on GitHub (Dark Classic) VS Code theme from BerriJ
- Bugfix trailing whitespace before
-
- Add folding between
{region xxxx} and {endregion xxxx}
- Add Nesting between
{region xxxx} and {endregion xxxx}
- Auto closing brackets in strings and comments.
- Add wordPattern and indentationRules into language configuration.
- <fix bug - issue #13, formatter formats dashed variable
foo-bar --> foo - bar
- Add Code-Blocks for Nesting and Folding in code without keywords Start:
{>, End:{<
- Add Snippet cb# : add new Code-Block
- Add Snippet for# : add for-next-block
- Add Snippet func# : add new empty Function
V1.0.0
Donate
|
if you prefer a one-time donation

|
Become a patron, by simply clicking on this button (**very appreciated!**):

|
Copyright
2021-2026 (c)Vitaly Ruhl
License: GNU General Public License v3.0
| |