Aller au contenu

Événements

Les plugins réagissent à l'activité de l'éditeur via IEventBus. Les événements sont de simples structs définis dans PluginEvents.h :

Événement Charge utile
DocumentOpened DocumentId, std::filesystem::path
DocumentClosed DocumentId
DocumentSaved DocumentId
TextChanged DocumentId, pos, addedBytes, removedBytes
SelectionChanged DocumentId
ActiveDocumentChanged DocumentId
AppAboutToQuit (aucune)
CommandShortcutChanged commandId, sequence (nouvelle combinaison portable ; "" = non lié)

CommandShortcutChanged se déclenche quand le raccourci effectif d'une commande change — un remappage par l'utilisateur dans le mappeur de raccourcis, un import/une réinitialisation de keymap, ou une suppression de conflit qui s'active/se lève. Les commandes liées à un menu n'ont besoin de rien (l'hôte relie leur action) ; les commandes enregistrées avec scope = command_scope::kPluginWindow s'abonnent et réappliquent la séquence à leurs propres widgets (voir Commandes et menus).

S'abonner

subscribe est un template qui renvoie une Subscription (RAII). Gardez l'abonnement vivant comme membre aussi longtemps que vous voulez que le callback se déclenche ; sa destruction vous désabonne.

m_sub = ctx.events().subscribe<MTE::plugin::DocumentSaved>(
    [this](const MTE::plugin::DocumentSaved& e) {
        // react to e.id ...
    });
class IEventBus {
public:
    template <class Event>
    Subscription subscribe(std::function<void(const Event&)> cb);
    // Forwards to a type-erased subscribeRaw(std::type_index, ...) internally.
};

Tip

Conservez chaque Subscription comme membre du plugin afin que tous les callbacks soient démontés automatiquement dans shutdown().