Extending VimSheet

Guide for creating extensions and plugins.

Adding File Format Support

Implement the vimsheet.io.base.FormatAdapter interface:

from vimsheet.io.base import FormatAdapter
from vimsheet.model.workbook import Workbook

class MyFormatAdapter(FormatAdapter):
    extensions = {".myfmt"}

    def read(self, path: str) -> Workbook:
        ...

    def write(self, path: str, workbook: Workbook) -> None:
        ...

Then register it:

from vimsheet.io.registry import register_adapter
register_adapter(MyFormatAdapter)

Custom Formula Functions

Define and register a function:

from vimsheet.formula.functions.registry import register

@register("DOUBLE", min_args=1, max_args=1)
def double(value: float) -> float:
    return value * 2

External Scripting

VimSheet supports a JSON-based protocol for external scripts. See Scripting Protocol for details.