LiveCode.Language behaviour (livecode v0.1.0)

Copy Markdown View Source

Behaviour for LiveCode language modules.

A language module describes meaning. The editor shell owns browser mechanics; language modules own tokens, completions, snippets, diagnostics, and optional formatting.

Summary

Functions

Safely ask a language module for completions.

Safely ask a language module for diagnostics.

Safely format text with a language module.

Safely ask a language module for snippets.

Safely tokenize text with a language module.

Callbacks

completions(context, opts)

(optional)
@callback completions(context :: LiveCode.Context.t(), opts :: keyword()) :: [
  LiveCode.Completion.t()
]

diagnostics(text, opts)

(optional)
@callback diagnostics(text :: String.t(), opts :: keyword()) :: [LiveCode.Diagnostic.t()]

format(text, opts)

(optional)
@callback format(text :: String.t(), opts :: keyword()) :: {:ok, String.t()} | :noop

snippets(opts)

(optional)
@callback snippets(opts :: keyword()) :: [LiveCode.Snippet.t()]

tokenize(text, opts)

@callback tokenize(text :: String.t(), opts :: keyword()) :: [LiveCode.Token.t()]

Functions

completions(language, context, opts \\ [])

@spec completions(module(), LiveCode.Context.t(), keyword()) :: [
  LiveCode.Completion.t()
]

Safely ask a language module for completions.

diagnostics(language, text, opts \\ [])

@spec diagnostics(module(), String.t(), keyword()) :: [LiveCode.Diagnostic.t()]

Safely ask a language module for diagnostics.

format(language, text, opts \\ [])

@spec format(module(), String.t(), keyword()) :: {:ok, String.t()} | :noop

Safely format text with a language module.

snippets(language, opts \\ [])

@spec snippets(
  module(),
  keyword()
) :: [LiveCode.Snippet.t()]

Safely ask a language module for snippets.

tokenize(language, text, opts \\ [])

@spec tokenize(module(), String.t(), keyword()) :: [LiveCode.Token.t()]

Safely tokenize text with a language module.