Skip to content

maxdulay/diagram.nvim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 

Repository files navigation

diagram.nvim

A Neovim plugin for rendering diagrams, powered by image.nvim.
You'll need to set up image.nvim to use this plugin, and either Kitty or Überzug++.

diagram-nvim-demo.mp4

Integrations & renderers

The plugin has a generic design with pluggable renderers and integrations.
Renderers take source code as input and render it to an image, often by calling an external process.
Integrations read buffers, extract diagram code, and dispatch work to the renderers.

Integration Supported renderers
markdown mermaid, plantuml, d2
neorg mermaid, plantuml, d2
Renderer Requirements
mermaid mmdc
plantuml plantuml
d2 d2

Installation

With lazy.nvim:

{
  "3rd/diagram.nvim",
  dependencies = {
    "3rd/image.nvim",
  },
  opts = { -- you can just pass {}, defaults below
    renderer_options = {
      mermaid = {
        background = nil, -- nil | "transparent" | "white" | "#hex"
        theme = nil, -- nil | "default" | "dark" | "forest" | "neutral"
        scale = 1, -- nil | 1 (default) | 2  | 3 | ...
      },
      plantuml = {
        charset = nil,
      },
      d2 = {
        theme_id = nil,
        dark_theme_id = nil,
        scale = nil,
        layout = nil,
        sketch = nil,
      },
    }
  },
},

Usage

To use the plugin, you need to set up the integrations and renderers in your Neovim configuration. Here's an example:

require("diagram").setup({
  integrations = {
    require("diagram.integrations.markdown"),
    require("diagram.integrations.neorg"),
  },
  renderer_options = {
    mermaid = {
      theme = "forest",
    },
    plantuml = {
      charset = "utf-8",
    },
    d2 = {
      theme_id = 1,
    },
  },
})

API

The plugin exposes the following API functions:

  • setup(opts): Sets up the plugin with the given options.
  • get_cache_dir(): Returns the root cache directory.

About

Diagrams as code in Neovim.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%