Files
nx_post_support/CHANGELOG.md
T
Christoph 513b1cb340 feat(def): add cross-file navigation and rename for PSC .def block templates and addresses
Add client and server support to navigate, inspect, reference, and rename block
template and address symbols declared in PSC .def files:

- Client: register language providers for .def (definition, hover, references,
  prepare/provide rename) and send the current document text with each request.
- Server: parse .def files into DefDocument/DefDeclaration/DefReference, expose
  def-specific LSP endpoints (definition/hover/references/prepareRename/rename),
  and integrate .def lookups into existing Tcl hover/definition/references/rename
  flows so Tcl calls jump to .def declarations.
- Tcl server keeps a snapshot API for .def documents (current editor content can
  replace file on request); only declared names in loaded .def files can be
  renamed. Name validation uses DEF_NAME_RE.

Update README and CHANGELOG to document navigation features.
2026-09-24 22:55:40 +02:00

314 lines
8.6 KiB
Markdown

# Changelog
All notable changes to NX Postprocessor Support are listed here, newest release first.
Versions correspond to the Git tags of this repository.
## Unreleased
### Added
- Go to Definition from block template and address arguments in Tcl (`MOM_do_template`, `MOM_force`, `MOM_suppress`, `MOM_ask_address_value`, ...) to the `BLOCK_TEMPLATE`/`ADDRESS` declaration in the PSC `.def` files
- Hover over block templates shows the template body; hover over addresses shows format, leader, trailer, min/max, and modality
- Find References and Rename for block templates and addresses across Tcl and `.def` files, including addresses used inside block templates
- Go to Definition, hover, references, and rename also work inside `.def` files
### Documentation
- Document DEF block templates, addresses, `BLOCK_LIST`/`ADDR_LIST`, and the formatting changes in the README
## [2026.9.700] - 2026-09-24
### Added
- `BLOCK_LIST` and `ADDR_LIST` completion keywords that list all loaded block templates or addresses; the keyword is replaced by the selected quoted name
### Changed
- Format comments with a space after `#` (`#Comment` becomes `# Comment`); `##` separators, `#!`, and comments that already start with whitespace stay unchanged
## [2026.9.600] - 2026-09-24
### Added
- Read `BLOCK_TEMPLATE` and `ADDRESS` names from the `.def` files listed under `<DefinedEvents>` in PSC layers; changes to PSC and DEF files are picked up automatically
- Suggest block templates for `MOM_do_template` and addresses for `MOM_ask_address_value`, `MOM_force`, and `MOM_suppress`, each followed by variables
- Suggest `Always`, `Once`, and `Off` for the first argument of `MOM_force` and `MOM_suppress`
- Insert block templates, addresses, and modes in quotes without doubling typed or auto-closed quotes; insert variables with a leading `$`
- Persistent workspace index in the extension storage, so restarts skip reparsing unchanged files; the cache is discarded automatically when the server or bundled tclint changes
### Changed
- Reparse only the top-level Tcl commands touched by an edit instead of the whole file
- Speed up TclOO completion, signature help, inlay hints, and Go to Definition by reusing the cached syntax tree and skipping files without classes
- Speed up references, document highlights, and call hierarchy with cached definition lookups
- Keep background indexing from blocking requests that need a fresh syntax tree
### Fixed
- Format and lint `uplevel` bodies as Tcl scripts instead of leaving them untouched
- Stop the Python debug bootstrap with a clear error instead of hanging when no debugpy listener or only a stale one is available
## [2026.9.501] - 2026-09-21
### Fixed
- Highlight braced stored-procedure names in `lappend` arguments
## [2026.9.500] - 2026-09-21
### Added
- Index Tcl scripts referenced by PSC layers, including external folders, environment-variable folders, and legacy Windows encoding
- Share TclOO class metadata across files for completion, signature help, inlay hints, and highlighting
- Go to Definition for TclOO classes, constructors, and resolved methods, including PSC library definitions
- CDL event handler snippets declare an extra `<var>_defined` global for parameters marked `TOGGLE Off`
- Allow `INVALID` in the CDL `CATEGORY` grammar
## [2026.9.400] - 2026-09-11
### Added
- Document-local TclOO method completion for `new`/`create` instances, `my`, and statically inferred return chains
- Signature help and parameter inlay hints for resolved TclOO methods and constructors, including optional and variadic arguments
- Suggest TclOO class names as classes and semantically highlight their declarations and calls
- Keep completion working while the file has syntax errors
## [2026.9.300] - 2026-09-10
### Added
- Array key completion, including keys built with substitutions
- Generated CDL event handler snippets declare `args`
## [2026.9.220] - 2026-09-08
### Fixed
- Completion inside unfinished braced arguments now recognizes nested commands
## [2026.9.210] - 2026-09-04
### Added
- Highlight escaped quoted strings and embedded variables in DEF files
## [2026.9.200] - 2026-09-03
### Added
- Command-aware completion for Tcl subcommands, fixed argument values, and options such as `string compare -nocase`
- Semantic argument completion for variables, procedures, namespaces, and local file paths
- Placeholder-based snippets for `if`, `foreach`, `proc`, `switch`, `try`, and `dict for`
## [2026.9.100] - 2026-09-03
### Added
- Incoming and outgoing call hierarchy for custom Tcl procedures and MOM event handlers
- Document highlights for procedure and variable occurrences
- Context-aware completion that ranks local, current-file, workspace, and built-in symbols in that order
### Changed
- Update lsprotocol to 2025.0.0
## [2026.8.300] - 2026-08-28
### Added
- Integrate the NX Tcl Remote Debugger; the separate `local-nx.nx-tcl-debug` extension is no longer needed
- `nx-tcl` attach configurations and breakpoints in Tcl and DEF files
- Stepping, call stack, scopes, variables, watches, evaluation, logpoints, hit conditions, and Tcl error stops
- Breakpoints in `LIB_GE_command_buffer_edit_*` bodies, mapped back to their source and owning procedure
## [2026.8.200] - 2026-08-19
### Added
- Configurable parameter-name inlay hints (`inlayHints.parameterNames`, `inlayHints.suppressWhenArgumentMatchesName`) for custom and built-in NX procedures, including variadic arguments
- Unlimited inlay hint length for Tcl files, so later parameter names are not truncated
### Changed
- Cache semantic tokens, inlay hints, hover, completion, and variable indexes and debounce edits and diagnostics for faster responses
## [2026.8.100] - 2026-08-19
### Added
- Workspace symbol index with Go to Definition, references, and rename
- Signature help for custom Tcl procedures and built-in NX/MOM procedures
- CDL event handler snippets and hover with generated handler and `mom_` parameter hints
- Keep indexes in sync when Tcl files are changed, deleted, or renamed on disk
## [2026.6.201] - 2026-06-22
### Fixed
- Preserve whitespace inside single-line braced expressions when formatting
## [2026.6.200] - 2026-06-22
### Fixed
- Tcl formatting bug caused by the formatter options
## [2026.6.100] - 2026-06-18
### Changed
- Folding ranges for Tcl are computed by the language server, avoiding duplicate regions
- Language server restarts are serialized so only one server runs at a time
- Pin the Python dependencies of the server and update the bundled libraries
### Fixed
- Several stability fixes
## [2025.9.200] - 2025-09-01
### Changed
- Install server dependencies with uv instead of pip
- Relicense to AGPL-3.0-or-later
## [2025.9.101] - 2025-08-16
### Added
- Signature help
- Variable checks and additional semantic tokens
### Fixed
- `incr` on variables that already exist and `foreach` loop variables
## [2025.8.400] - 2025-08-15
### Added
- Outline for DEF and CDL files
### Fixed
- Duplicate `MOM_add_to_block_buffer` entry renamed to `MOM_add_to_line_buffer`
## [2025.8.300] - 2025-08-12
### Added
- Go to Definition and document outline for Tcl
- Variable index with positions
- Procedure documentation in hover
### Fixed
- Formatter deleting line continuations (`\`)
- Wrong semantic highlighting in several cases
## [2025.8.202] - 2025-08-12
### Fixed
- Formatter deleting line continuations (`\`)
## [2025.8.201] - 2025-08-11
### Fixed
- Highlighting errors
## [2025.8.200] - 2025-08-09
- Version change only
## [2025.8.2] - 2025-08-09
- Version change only
## [2025.08.1] - 2025-08-09
### Added
- Load procedures from all workspace files and PSC-referenced scripts for completion
- Extension icon
## [0.4.14] - 2025-08-04
### Added
- `LIB_GE_command_buffer_edit_*` support in the parser
### Fixed
- Namespace calls in POCO code
- Semantic highlighting of variables in arrays
## [0.4.12] - 2025-08-03
### Added
- More semantic tokens and completion items
## [0.4.10] - 2025-07-28
### Added
- Linter based on tclint
### Changed
- Use tclint as parser and formatter
## [0.4.9] - 2025-07-22
### Added
- More completion items
## [0.4.8] - 2025-07-21
### Added
- More NX functions and hover documentation
## [0.4.7] - 2025-07-21
### Added
- Formatter settings
### Fixed
- Formatter fixes
## [0.4.6] - 2025-07-21
### Fixed
- `@` in buffers when formatting
## [0.4.5] - 2025-07-21
### Fixed
- Formatting of buffers
## [0.4.4] - 2025-07-21
### Fixed
- Formatter fixes
## [0.4.3] - 2025-07-21
### Fixed
- Formatting fixes
## [0.4.2] - 2025-07-20
### Added
- Initial release with syntax highlighting, formatting, auto-completion (including `TYPE`), hover, and DEF file support