Skip to content

xshyamx/simple-plantuml-mode

Repository files navigation

Simple PlantUML Mode

Major mode for PlantUML files.

Supports

  • Xref navigation of component definitions & references within the same file
  • Generating png preview files using the plantuml jar & java

Adds the following keybindings

Keybinding Feature
C-c C-c Compile diagram to check for errors
C-c C-p Generate diagram preview
C-c C-o Generate diagram preview & open in external image viewer
C-c ! Select diagram type when starting a diagram
C-c i Insert a deployment diagram element with automatic alias generated
C-u C-c i Insert diagram element with prompt for alias
C-c C-a t Add title based on the file name
C-c C-a h Add Draft header
C-c C-a f Add footer based on the current date
C-c r Converts a selection to a set of component declarations with automatic alias generated by prompting for the component type (Use C-u to put alias after description eg. for sequence diagram participants)
M-<up> Move line up
M-<down> Move line down
C-c c Insert transparent rectangle container with dashed (Use C-u for dotted, C-u C-u for box)
C-j Expand special like emmet mode (Alternate C-<return>). Use C-u for dashed & C-u C-u for dotted
C-c ' Open included file when invoked from line with !include directive

Why?

While there is already an excellent plantuml-mode available what is the reason of this package existing?

  • Did not like planutml-init loading language keywords for each session
  • Did not like preview buffer popping up new window distracting the diagramming session
  • Wanted errors in plantuml compilation to be easily accessible via the compilation-mode
  • Wanted quick creation of plantuml diagram components
  • Wanted jump-to-definition & list-references within the file

Nice to have features

  • Imenu listings for component definitions

  • Simple emmet-mode like completions for relationships eg. a->b,c<-d expands to

    a --> b
    a --> c
    b <-- d
    c <-- d
    

    Running C-u C-j on the same expression results in

    a ..> b
    a ..> c
    b <.. d
    c <.. d
    

    Running C-u C-u C-j on the same expression results in

    a ~~> b
    a ~~> c
    b <~~ d
    c <~~ d
    
  • Convert region of text to component type declarations eg. selecting the following lines

    Frontend API
    Data Base
    

    And running plantuml-convert-region or C-c r and selecting component for component type results in

    component fa as "Frontend API"
    component db as "Data Base"
    

    While running C-u C-c r on the same selection and selecting participant as the component type results in

    participant "Frontend API" as fa
    participant "Data Base" as db
    

Installation

Pre-requisites

  1. Ensure a compatible Java Runtime Environment (JRE) is installed

  2. Install the latest PlantUML jar file from https://github.com/plantuml/plantuml

For Emacs

  1. Clone the repository into site-lisp in the emacs user directory

    git clone https://github.com/xshyamx/simple-plantuml-mode \
        $HOME/.emacs.d/site-lisp/simple-plantuml-mode
  2. Add to load-path

    (add-to-list
    	'load-path
    	(expand-file-name "site-lisp/simple-plantuml-mode" user-emacs-directory))
  3. Load & configure

    (require 'plantuml-mode)
    (setq plantuml-java-cmd "java"
    	  plantuml-jar-path
    	  (expand-file-name
    	   "~/.m2/repository/net/sourceforge/plantuml/plantuml/1.2022.12/plantuml-1.2022.12.jar"))

About

A simplified version of plantuml mode

Resources

Stars

Watchers

Forks

Packages

No packages published