Minga.Extensions.LanguagePacks (Minga v0.1.0)

Copy Markdown View Source

Starts bundled language packs and registers their catalog data through extension-owned sources.

Bundled packs use the same Minga.Language.Registry.register/2 path as third-party language packs. Each %Minga.Language{} carries its own extensions, filenames, shebangs, devicon, grammar, formatter, and LSP defaults, so stopping or reloading a pack removes the whole language record from the registry instead of leaving stale derived data behind.

Summary

Types

A module that implements the language-pack extension callbacks.

Pack validation error when two language definitions claim the same key.

Runtime state for the bundled pack starter.

Functions

Returns a specification to start this module under a supervisor.

Returns bundled language pack modules in startup order.

Registers all languages owned by a pack, replacing stale entries from an earlier load.

Reloads a pack by removing its previous source-owned entries, then registering its current modules.

Returns the contribution source used for a pack.

Starts the bundled language pack loader.

Unregisters all language catalog data owned by a pack.

Types

pack_module()

@type pack_module() :: module()

A module that implements the language-pack extension callbacks.

pack_validation_error()

@type pack_validation_error() :: {:duplicate_pack_key, term(), module(), module()}

Pack validation error when two language definitions claim the same key.

state()

@type state() :: %{loaded: [atom()], failed: [{atom(), term()}]}

Runtime state for the bundled pack starter.

Functions

child_spec(arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

packs()

@spec packs() :: [pack_module()]

Returns bundled language pack modules in startup order.

register_pack(pack_module)

@spec register_pack(pack_module()) :: :ok | {:error, term()}

Registers all languages owned by a pack, replacing stale entries from an earlier load.

reload_pack(pack_module)

@spec reload_pack(pack_module()) :: :ok | {:error, term()}

Reloads a pack by removing its previous source-owned entries, then registering its current modules.

source_for(pack_module)

@spec source_for(pack_module()) :: {:extension, atom()}

Returns the contribution source used for a pack.

start_link(opts \\ [])

@spec start_link(keyword()) :: Agent.on_start()

Starts the bundled language pack loader.

unregister_pack(pack_module)

@spec unregister_pack(pack_module()) :: :ok

Unregisters all language catalog data owned by a pack.