Please note that PlantUml is not a functional programming language but a static design DSL specifically for creating diagrams.
PlantUml Language Service provides editor features for the PlantUml Language to Visual Studio (2017 / 2019). These features are listed and elaborated on below.
In its default state the language service currently posts your markup to the PlantUml server for rendering in the same manner most PlantUml services provide. Client side rendering via GraphViz will be implemented in a future release.
Syntax Highlighting & File Recognition
Syntax elements recognised in the PlantUml grammar definition are highlighted accordingly for any of the following file types:
These files are indicated in the Solution Explorer with the following icon:
Rudimentary auto completion against symbols in the same file is provided. Because no cross-file symbols can be loaded, the language service assumes some user knowledge of the basic PlantUml syntax.
A context menu option has been added to the code window and solution explorer allowing for diagram generation of the selected/active PlantUml file.
The preview window will render the diagram and provide feedback in a panel composed of 3 areas:
If valid, the generated diagram url will be printed to the Output window. For ease of re-use in your documentation it will be printed in both standard html and markdown formats.
A dockable Tool Window available under "View > Other Windows > PlantUml Language Reference" links to the latest PlantUml Reference Guide.
The PlantUml Language Service respects all common preprocessor commands, and can use them even if they are nested.
If the file is not in the solution directory, or can otherwsie not be found or loaded, the diagram will render with warnings.
To avoid warnings, or to use files located elsewhere on your computer, a custom flag has been created: -P (provide the full path).
Several macros have been embedded for simplicity. They can be imported into your diagram using the
Please refer to the Full Readme on GitHub for more details.