build_and_puplish.yml / build_and_publish (release) Successful in 35s
Embed the NX Tcl Remote Debugger into the NX Postprocessor extension. Add a new debugging client, protocol, and adapter logic to drive attach/launch, breakpoints, stepping, and evaluation via the runtime adapter. - Introduced a client debugger with a new adapter and protocol - Wired attach/launch, breakpoints, stepping, and evaluation - Updated docs and licensing to reflect the embedded debugger
133 lines
5.2 KiB
Markdown
133 lines
5.2 KiB
Markdown
# 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
|
|
- **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.11 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.
|
|
|
|
## 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:
|
|
|
|
```json
|
|
{
|
|
"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)
|
|
- Hover information
|
|
- Signature help while entering procedure arguments
|
|
- Remote NX Tcl debugging with breakpoints and full stepping
|
|
|
|
## Development and debugging
|
|
|
|
Install the root and client dependencies before the first debug session:
|
|
|
|
```powershell
|
|
npm install
|
|
npm install --prefix client
|
|
npm run test:debugger
|
|
```
|
|
|
|
Use one of the checked-in VS Code launch configurations:
|
|
|
|
- **Run Extension** debugs the TypeScript extension host.
|
|
- **Debug Extension and Python** debugs both the TypeScript extension and the
|
|
Python language server. This is the recommended configuration for LSP work.
|
|
- **Python Attach** attaches manually to an already running Python process.
|
|
|
|
The launch configuration creates a fresh non-minified bundle with embedded
|
|
source maps and opens `test/test.tcl` so the extension activates immediately.
|
|
For combined debugging, the Python adapter listens on `127.0.0.1:5678`; the
|
|
language server waits for that adapter before initialization. The NX
|
|
Postprocessor Support output channel reports `Python debug mode: enabled` and
|
|
shows `_debug_server.py` in the server command when the debug path is active.
|
|
|
|
## Contributing
|
|
|
|
This extension is actively maintained. For issues or feature requests, please visit our [repository](https://git.cbsk-tech.de/Christoph/nx_post_support.git).
|
|
|
|
## License
|
|
|
|
AGPL-3.0 License - see LICENSE file for details. The embedded NX Tcl Remote Debugger adapter
|
|
retains its MIT notice in `debugger/NX_TCL_DEBUGGER_LICENSE.txt`.
|