No description
  • Python 96.6%
  • TypeScript 1.9%
  • JavaScript 1%
  • Tcl 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Christoph 2a932e93ec
All checks were successful
Tests / python (push) Successful in 27s
Tests / node (push) Successful in 17s
Update version to 2026.10.002
2026-09-26 21:05:01 +00:00
.gitea/workflows Update .gitea/workflows/build_and_puplish.yml 2026-09-26 20:59:58 +00:00
.vscode chore(vscode): add Linux debug launch configurations and tasks, update lockfile 2026-09-24 07:53:15 +02:00
client feat(def): add cross-file navigation and rename for PSC .def block templates and addresses 2026-09-24 22:55:40 +02:00
images add icon 2025-08-06 22:08:39 +02:00
server feat(def-navigation): surface last-loaded .def declaration for hover/GoTo 2026-09-25 21:38:06 +02:00
syntaxes feat(cdl): allow INVALID in CATEGORY pattern 2026-09-21 20:52:53 +02:00
test feat(cdlEventHandler): detect TOGGLE Off and emit *_defined globals 2026-09-21 20:51:02 +02:00
.gitignore feat(server): index PSC scripts and provide cross-file TclOO navigation/completions 2026-09-21 20:47:51 +02:00
.prettierrc.json add Hover feature 2025-01-08 15:53:19 +01:00
.vscodeignore feat(debugger): integrate NX Tcl Remote Debugger into NX Postprocessor 2026-08-28 22:36:18 +02:00
CHANGELOG.md feat(def-navigation): surface last-loaded .def declaration for hover/GoTo 2026-09-25 21:38:06 +02:00
esbuild.js feat(debug): enable Python debug workflow and debug server integration 2026-08-17 11:02:22 +02:00
language-configuration.json add new features and fix bugs 2026-06-18 17:31:51 +02:00
LICENSE Relicense to AGPL-3.0-or-later 2025-08-16 11:29:09 +02:00
package-lock.json chore(vscode): add Linux debug launch configurations and tasks, update lockfile 2026-09-24 07:53:15 +02:00
package.json Update version to 2026.10.002 2026-09-26 21:05:01 +00:00
README.md feat(def): add cross-file navigation and rename for PSC .def block templates and addresses 2026-09-24 22:55:40 +02:00
tsconfig.json update to lsp for TCL 2025-07-15 16:37:40 +02:00
vsc-extension-quickstart.md init project 2025-01-07 10:22:59 +01:00

NX Postprocessor Support

A comprehensive VS Code extension providing language support and remote debugging for NX CAM postprocessor development, including CDL, TCL, and DEF files.

Features

  • Syntax Highlighting - Full syntax highlighting for CDL, TCL, and DEF files
  • Code Formatting - Automatic code formatting for all supported file types
  • Multi-language Support - Supports NX CDL, TCL, and DEF file formats
  • Intelligent Code Analysis - Linting and error detection for postprocessor code
  • Auto-completion - Context-aware code completion for faster development
  • Signature Help - Shows parameters and documentation for custom and NX procedures
  • Call Hierarchy - Traces incoming and outgoing calls between custom TCL procedures and MOM event handlers
  • Document Highlights - Highlights all reads, writes, and calls of the symbol under the cursor
  • Context-aware Completion - Prioritizes local symbols and suggests variables, procedures, namespaces, paths, Tcl subcommands, valid argument values, and options based on cursor context
  • PSC and TclOO Classes - Indexes Tcl scripts referenced by PSC layers, including external folders. Classes from indexed files provide method completion, signature help, parameter hints, and class highlighting in other files. PSC script names may omit .tcl; relative folders resolve from the PSC directory, and environment-variable folders are supported. Missing scripts are reported in the output channel; encrypted libraries cannot supply static class metadata.
  • DEF Block Templates and Addresses - Reads the .def files listed under <DefinedEvents> in PSC layers and suggests their BLOCK_TEMPLATE and ADDRESS names, see DEF block templates and addresses
  • Tcl Snippets - Inserts placeholder-based structures for if, foreach, proc, switch, try, and dict for
  • NX Tcl Remote Debugger - Breakpoints, stepping, call stack, scopes, variables, watches, evaluation, logpoints, hit conditions, and Tcl error stops directly in a running NX Post process

Supported File Types

  • .cdl - NX User Defined Event File
  • .tcl - NX TCL postprocessor files
  • .def - NX Definition files

Installation

  1. Install from the VS Code Marketplace
  2. Install Python 3.12 or higher
  3. Open any .cdl, .tcl, or .def file
  4. The extension will automatically activate and provide language support

The former standalone NX Tcl Remote Debugger extension is no longer required. Disable or uninstall local-nx.nx-tcl-debug before using the integrated debugger because both extensions register the same nx-tcl debug type.

Configuration

The extension can be configured through VS Code settings:

  • nx-post-support.interpreter - Specify custom Python interpreter path for the language server
  • nx-post-support.formatter - Enable/disable the TCL formatter (default: false)
  • nx-post-support.inlayHint - Enable/disable inlay Hints (default: true)
  • nx-post-support.inlayHints.parameterNames - Show parameter names for all, only literals, or none (default: all)
  • nx-post-support.inlayHints.suppressWhenArgumentMatchesName - Hide redundant hints such as value: before $value (default: true)

TCL files default to unlimited inlay hint length so that VS Code does not truncate later parameter names on a line. An explicit user setting for editor.inlayHints.maximumLength still takes precedence.

DEF Block Templates and Addresses

The language server resolves the .def files of every PSC layer's <DefinedEvents> section the same way as layer scripts (relative to the PSC, SubFolder, environment variables, missing .def extension) and collects all BLOCK_TEMPLATE and ADDRESS declarations. Changes to PSC or DEF files are picked up automatically.

Command Suggestions
MOM_do_template Block templates, then variables
MOM_ask_address_value Addresses, then variables
MOM_force, MOM_suppress 1st argument: Always, Once, Off, then variables; further arguments: addresses, then variables

Block templates, addresses, and Always|Once|Off are inserted in quotes ("steady_rest"); a quote that is already typed or auto-closed is replaced instead of doubled. Variables are inserted with a leading $. Typing $ yourself still shows variables only.

Two keywords list all loaded names anywhere in a Tcl file:

  • BLOCK_LIST - shows all block templates
  • ADDR_LIST - shows all addresses

Select the keyword from the completion list (or type it completely) to open the list; text typed directly after the keyword, such as ADDR_LISTSP, narrows it. The keyword is replaced by the selected quoted name.

Navigation between Tcl and DEF files

Block template and address names are linked to their declarations in the PSC .def files:

  • Go to Definition (F12) on MOM_do_template "steady_rest" or MOM_force Once X jumps to BLOCK_TEMPLATE steady_rest or ADDRESS X. Inside a .def file, an address used in a block template (X[$mom_pos(0)]) jumps to its ADDRESS declaration.
  • Hover shows the body of a block template, or the format (resolved to its FORMAT definition), leader, trailer, min/max, and modality (FORCE) of an address.
  • Find All References (Shift+F12) lists the declaration, all Tcl calls, and all block templates that use an address.
  • Rename (F2) changes the declaration and all usages in Tcl and .def files together. Only names declared in a loaded .def file can be renamed.

Recognized Tcl commands: MOM_do_template, MOM_add_to_block_buffer, MOM_polar_motion, MOM_force_block, MOM_ask_address_value, MOM_add_to_address_buffer, MOM_enable_address, MOM_disable_address, MOM_force, MOM_suppress, MOM_incremental, and MOM_ask_definition_element/MOM_has_definition_element with ADDRESS or BLOCK. Names built from variables (MOM_do_template $name) cannot be resolved statically.

NX Tcl Remote Debugger

Add a VS Code attach configuration

Create .vscode/launch.json through Run and Debug: create a launch.json file and select NX Tcl: Attach to NX Post, or use this configuration:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "nx-tcl",
            "request": "attach",
            "name": "Attach to NX Post Tcl",
            "host": "127.0.0.1",
            "port": 4711,
            "connectTimeout": 120000,
            "stopOnEntry": false,
            "breakOnError": true,
            "localRoot": "${workspaceFolder}"
        }
    ]
}

When VS Code and NX see the source through different roots, set remoteRoot to the root used by NX and keep localRoot as the corresponding workspace root.

Start debugging

  1. Set breakpoints on executable Tcl or DEF commands.
  2. Start Attach to NX Post Tcl in VS Code before running the postprocessor.
  3. Start postprocessing in NX.
  4. Use Continue, Step Over, Step Into, Step Out, Pause, Variables, Watch, and the Debug Console as with a normal source debugger.

Breakpoints remain active and stop at every real invocation. Use a hit condition such as 1 for a one-time stop. Blank lines, comments, declarations, and multiline Tcl commands may be relocated to the nearest executable command; VS Code shows the resolved line. Dynamic LIB_GE_command_buffer_edit_* bodies are mapped back to their original source and owning Tcl procedure.

Usage

Simply open any supported file type and enjoy:

  • Syntax highlighting
  • Error detection and linting
  • Code completion
  • Code formatting (Format Document command), including uplevel bodies and a space after # in comments
  • Hover information
  • Signature help while entering procedure arguments
  • Incoming and outgoing call hierarchy for custom procedures and MOM event handlers
  • Document-wide highlights for procedure and variable occurrences
  • Context-aware completion with local symbols ranked before workspace and built-in symbols, plus semantic arguments, local paths, Tcl subcommands, and options such as string compare -nocase
  • Placeholder-based snippets for common Tcl control structures and procedures
  • Block template and address suggestions from PSC DEF files, including BLOCK_LIST and ADDR_LIST
  • Go to Definition, hover, references, and rename for block templates and addresses across Tcl and DEF files
  • Remote NX Tcl debugging with breakpoints and full stepping

Contributing

This extension is actively maintained. For issues or feature requests, please visit our repository.

License

AGPL-3.0 License - see LICENSE file for details.