All around TPL add on für visual studio code mit dem man angenehm und einfach in TPL Programmieren kann
Go to file
kuro a63c490276 Readme update 2026-10-28 21:10:39 +00:00
.vscode Initial commit 2026-10-07 23:34:05 +02:00
src Fixes for common mistakes the current add on had 2026-10-28 22:04:56 +01:00
syntaxes Komplettes update für die funktionen und beschreibungen 2026-10-08 22:02:08 +02:00
.gitignore Erweiterung die feste log regel fällt raus, dafür sind jetzt alle möglichen BMC TPL erweiterungen als auto complete drin 2026-10-09 00:36:29 +02:00
.vscode-test.mjs Initial commit 2026-10-07 23:34:05 +02:00
.vscodeignore Initial commit 2026-10-07 23:34:05 +02:00
LICENSE.md git ignore erweitert, unnötige dateien gelöscht, package.json angepasst und license file namen angepasst 2026-10-08 23:15:20 +02:00
README.md Readme update 2026-10-28 21:10:39 +00:00
build_release.sh Komplettes update für die funktionen und beschreibungen 2026-10-08 22:02:08 +02:00
esbuild.js Initial commit 2026-10-07 23:34:05 +02:00
eslint.config.mjs Initial commit 2026-10-07 23:34:05 +02:00
icon.png git ignore erweitert, unnötige dateien gelöscht, package.json angepasst und license file namen angepasst 2026-10-08 23:15:20 +02:00
language-configuration.json Initial commit 2026-10-07 23:34:05 +02:00
linter_fixes.sh linter fixes, fixes after refactoring and error fixing after i made MetadataRule seperate from BlockRule 2026-10-18 03:27:52 +02:00
package-lock.json Initial commit 2026-10-07 23:34:05 +02:00
package.json Fixes for common mistakes the current add on had 2026-10-28 22:04:56 +01:00
tsconfig.json Erweiterung die feste log regel fällt raus, dafür sind jetzt alle möglichen BMC TPL erweiterungen als auto complete drin 2026-10-09 00:36:29 +02:00

README.md

English Description first - after that comes the German Version.


BMC TPL Code All-Around

Linter, Auto-Formatter, IntelliSense, and Hover Documentation for the BMC TPL (Topology Pattern Language).

This Visual Studio Code extension transforms your editor into a fully-fledged development environment for BMC Discovery TPL scripts. It saves you typing, formats code according to strict best practices, prevents syntax errors before deployment, and understands cross-project dependencies.


✨ Features

🤖 Intelligent Linter (Syntax Scanner)

The linter analyzes the code in real-time, remembers states across line breaks, and warns you about typical TPL errors:

  • Strict Hierarchy Checking: Monitors the correct order of blocks within patterns and syncmappings (metadata -> overview -> constants -> triggers -> mapping/removal -> body).
  • Smart Assignment Check: Finds missing semicolons (but tolerates them in enumeration blocks or multi-line statements). Warns strictly with an error if = is used instead of := for variable assignments (outside of legitimate if/where comparisons).
  • Block & Bracket Tracking: Detects unclosed blocks (like missing end body; or end pattern;) and finds unclosed parentheses ( or brackets [.
  • Mandatory Field Validation: Checks if mandatory module-level metadata (origin, author, products, publishers, tree_path) are present based on your dynamic compliance settings, and if an initial log.debug statement exists in the body.
  • Indentation Checking: Instantly highlights messy indentation (any space count that is not a clean multiple of 4) with a warning, reminding you to use the Auto-Formatter.
  • Unbreakable Lexer (New): Built-in state-machine lexer correctly parses complex strings, triple-quotes ("""), and comments, ensuring accurate parameter counting and avoiding false-positive errors on complex TPL syntax.
  • Version Checking: Compares the TPL version declared in the module with the target version defined in your settings and warns about outdated scripts.

⚙️ Configurable Plugin Settings & Compliance

Personalize the plugin directly via the VS Code user interface (File > Preferences > Settings > Extensions > BMC TPL Settings):

  • Metadata Compliance: Define exact compliance rules for your workspace. Choose which metadata fields are mandatory and configure the tree_path strictly (e.g., minimum depth and forced static base nodes like ['MyCompany', 'IT']).
  • Default Metadata: Store your own values for Author, Publisher, Origin, etc. These are automatically inserted when generating new modules.
  • TPL Target Version: Define the default TPL version (e.g., 23 for 1.23) you are developing for.
  • Live Reload: Changes to settings take effect immediately, no editor restart required.

🎨 Auto-Formatter & Visual Alignment (Shift + Alt + F)

No more broken indentations! The formatter gets your code in top shape:

  • VS Code Standard: Strictly enforces 4 spaces per indentation level.
  • Dynamic Block Indentation: Automatically detects starting and ending blocks (if, for, pattern, table, etc.) and adjusts the indentation level.
  • Bracket Memory (Visual Alignment): The ultimate discipline! The formatter remembers the exact column position of opened arrays [ or function calls ( and flawlessly aligns all subsequent lines to this bracket.
  • Uncompromising Cleanup (New): Automatically strips all non-standard indentation (like 2, 3, or 6 spaces) and replaces it with exact, mathematically calculated 4-space blocks.

💡 IntelliSense & Autocomplete (Cross-File)

Saves an extreme amount of coding time through massive context awareness:

  • "Go to Definition" (New): Instantly navigate your codebase! Ctrl+Click (or F12) on any function call to jump directly to its declaration. Searches locally first and falls back to the RAM-based workspace index for cross-file jumps.
  • Dynamic Taxonomy Support (New): Full autocomplete support for dynamic BMC scopes. Typing model. suggests generic <NodeKind> constructors, while model.rel. offers dynamic <Relationship> constructors with ready-to-use snippets.
  • Full BMC Standard Library: Seamless integration of all built-in functions (e.g., discovery, number, text, model). Supports parameter overloads (e.g., number.toText optionally with or without a base) via Tab navigation.
  • Workspace Scanning: If you import a module (e.g., from company.helpers import my_helper), the plugin scans your entire project in the background. If you type my_helper., it automatically suggests all available define methods.
  • Case-Insensitive Resolution (New): All method lookups (both Core and TKU) are completely case-insensitive, meaning rdbms_functions.xyz works just as flawlessly as RDBMS_Functions.Xyz.
  • Local Namespaces: Detects definitions blocks in the same file and suggests their methods.
  • Variable Tracking: Learns all variables you have defined with := and suggests them to you later.

🔍 Hover Documentation (Tooltips)

When you hover over a method name, a pattern, or a table:

  • Official BMC Docs: Full integration of the original, multi-line BMC documentation for all built-in functions loaded dynamically (no browser needed anymore!).
  • DocString Extraction: Reads custom multi-line comments (""" or ''') placed under define or pattern declarations and renders them as clean Markdown tooltips (even cross-project!).

⚡ Quick Fixes (Code Actions / Lightbulb)

Offers immediate repair options with a single click:

  • "Insert missing module metadata": Instantly generates missing mandatory fields in the module metadata block based on your workspace compliance settings.
  • "Insert log statement": Adds the missing log.debug("Start pattern..."); right at the beginning of the body block.
  • "Tabs to Spaces": Instantly replaces all illegal tabs (`\t