This adds tooling to statically extract Tcl variable names from syntax trees without evaluating substitutions, enabling better completions for array elements and plain variables. The new helpers are wired into the completion and navigation flows and are supported by tests covering array keys and substitutions. - Introduce variable_names.py with variable_name() and array_key_parts() - Wire static name extraction into completion and symbol indexing - Add tests for array key completion with substitutions
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
- Tcl Snippets - Inserts placeholder-based structures for
if,foreach,proc,switch,try, anddict 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
- Install from the VS Code Marketplace
- Install Python 3.12 or higher
- Open any
.cdl,.tcl, or.deffile - 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 servernx-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 forall, onlyliterals, ornone(default:all)nx-post-support.inlayHints.suppressWhenArgumentMatchesName- Hide redundant hints such asvalue: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.
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
- Set breakpoints on executable Tcl or DEF commands.
- Start Attach to NX Post Tcl in VS Code before running the postprocessor.
- Start postprocessing in NX.
- 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)
- 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
- 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.