Dokumentasjon av plugin.json¶
Hvert Python-programtillegg erklærer identiteten sin, inngangspunktet sitt og plasseringen
sin på menylinjen i en plugin.json-fil ved siden av main.py-en sin. Det er det samme
skjemaet C++-siden bruker; bare feltene entry og module er særegne for Python.
Eksempel¶
{
"id": "org.example.wordcount",
"name": "Word Count",
"version": "1.0.0",
"vendor": "Example, Inc.",
"description": "Counts words and characters in the active document.",
"apiVersion": 1,
"entry": "python",
"module": "main",
"pyRequires": [],
"order": 900,
"menus": [
{ "title": "Plugins", "barPriority": 570, "itemPriority": 100 }
]
}
Felter¶
Påkrevde¶
| Felt | Type | Merknader |
|---|---|---|
id |
tekst | En entydig identifikator i omvendt DNS-form. Brukes overalt — å slå av og på, loggelinjer, innstillinger per programtillegg. Må ikke endre seg fra versjon til versjon. |
apiVersion |
heltall | Må være lik vertens MTE_PLUGIN_API_VERSION. For tiden 1. En uoverensstemmelse vises på programtilleggssiden, og programtillegget listes, men lastes ikke inn. |
entry |
tekst | Må være "python" for å gå gjennom Python-backenden. "native" eller ingenting går gjennom Qt-innlasteren. |
module |
tekst | Navnet på det Python-modulet som inneholder register(ctx). Er det "main", leter arbeideren etter main.py inne i programtilleggsmappen. Pakkenavn med punktum ("src.main") er en framtidig utvidelse — fase 1 støtter bare flate navn. |
Anbefalte¶
| Felt | Type | Merknader |
|---|---|---|
name |
tekst | Det lesbare visningsnavnet som vises på programtilleggssiden. |
version |
tekst | Semver; ellers fritt formulert. |
vendor |
tekst | Opphavsperson eller organisasjon. Vises på programtilleggssiden. |
description |
tekst | Én eller to linjer. Vises på programtilleggssiden. |
Valgfrie¶
| Felt | Type | Merknader |
|---|---|---|
order |
heltall | Innlastingsrekkefølgen på tvers av programtillegg; lavere lastes tidligere. 1000 som standard. Uavgjorte avgjøres av id. requires går foran. |
requires |
tabell av tekster | ID-ene til programtillegg som dette programtillegget ikke kan virke uten (native og Python likt), for eksempel ["org.mte.lsp"] — ikke pip-pakker, de hører hjemme i pyRequires. De startes før dette programtillegget uansett hva order sier; mangler ett av dem, er det slått av, sperret av lisensen eller ble det ikke lastet inn, startes ikke dette programtillegget i det hele tatt, og Innstillinger → Programtillegg sier hvilket det trenger og hvorfor. Samme betydning som for et native programtillegg. |
apiMinorVersion |
heltall | Den laveste minor-versjonen av vertens API som programtillegget trenger (standard 0). Et Python-programtillegg har ingen kompilert info(), så dette er dets eneste erklæring: oppgi minor-versjonen til det nyeste kallet du bruker. En eldre vert viser programtillegget som «Krever en nyere versjon av OctoEdit» og starter det ikke. |
pyRequires |
tabell av tekster | Pip-kravstrenger (for eksempel ["requests>=2.31"]). Ved programtilleggets første oppstart setter redigereren opp et virtuelt miljø per programtillegg, installerer disse i det med pip og kjører programtilleggets arbeider under det (se Pakking). Poster som ikke er tekst, og tomme poster hoppes over. |
permissions |
tabell av tekster | Grove erklæringer om evner (for eksempel ["network"]), som vises skrivebeskyttet i kolonnen Tillatelser under Innstillinger → Programtillegg, så brukerne kan se hva et programtillegg sier at det gjør. Bare en erklæring — håndheves ennå ikke. |
menus |
tabell av objekter | Se nedenfor. |
thirdParty |
tabell av objekter | De tredjepartskomponentene programtillegget leverer, for kreditering i vinduet Om. Hver post: name (påkrevd), license, url, file. Lever den lisensteksten file navngir, sammen med programtillegget under Plugins/Licenses/<id>/. Se nedenfor. |
menus¶
Hver post erklærer én øverste meny programtillegget bidrar til, og setter plasseringen
dens. Gjenta ett objekt per øverste meny du rører (Tools, Plugins, Help og så
videre).
| Felt | Type | Merknader |
|---|---|---|
title |
tekst, påkrevd | Merkelappen på den øverste menyen posten ligger under (Plugins, Tools …). Må passe til det ytterste venstre leddet i de stiene du gir til ctx.menus.add_item(). |
barPriority |
heltall, valgfritt | Rang fra venstre mot høyre på menylinjen. Lavere = lenger til venstre. Kjernens menyer har faste prioriteter med 100 imellom (Fil 100, Rediger 200 …, Vindu 600); 570 plasserer undermenyen din nær Plugins-plasseringen. Gjentas på tvers av programtillegg som retter seg mot den samme øverste menyen; at den siste vinner, gjør ikke noe, for den kan gjentas. |
itemPriority |
heltall, valgfritt | Den loddrette rangen for hele programtillegget ditts blokk inne i den nederste menyen. 1000 som standard. Lavere = lenger opp. |
Du lister IKKE enkeltposter her — dem legger ctx.menus.add_item() til under kjøringen.
menus handler bare om plassering på menylinjen.
thirdParty¶
Erklær enhver tredjepartskomponent programtillegget ditt leverer, så vinduet Om kan kreditere den. Hver post:
"thirdParty": [
{ "name": "SomeLib", "license": "MIT",
"url": "https://example.com/", "file": "SomeLib-LICENSE.txt" }
]
| Felt | Type | Merknader |
|---|---|---|
name |
tekst, påkrevd | Komponenten. Poster uten et navn som ikke er tomt, droppes. |
license |
tekst, valgfritt | En SPDX-aktig merkelapp, for eksempel MIT eller LGPL-3.0. |
url |
tekst, valgfritt | Prosjektets eller hjemmesidens adresse. |
file |
tekst, valgfritt | Filnavnet på den lisensteksten du leverer, som finnes under Plugins/Licenses/<your-plugin-id>/<file>. |
Du eier lisenstekstene: lever dem sammen med programtilleggspakken din under
Plugins/Licenses/<id>/. Redigereren lister komponentene og peker brukerne mot den
mappen; den tar ikke vare på tredjepartstekster for programtillegget ditt i sin egen
Licenses/-mappe.
Den statiske kontrollen¶
Ved oppdagelsen — og igjen når en .mteplugin-pakke installeres — leser verten module,
åpner <pluginDir>/<module>.py og bekrefter at den inneholder en def register(...) på
øverste nivå — det kjøres ingen kode. Installasjonsprogrammet avviser en pakke som
ikke lever opp til det, med et feilvindu; oppdagelsen hopper i stillhet over
programtillegget med en feillinje i loggen:
PythonPluginBackend: skipping 'org.example.wordcount': module
'.../main.py' does not declare a top-level `def register(...)`.
Hold register i kolonne 0 på en linje som begynner med def register(.
Innlastingsrekkefølge og plassering på menylinjen¶
Bidrar programtillegget ditt til Plugins med barPriority: 570, kommer menyen fram som
nummer 570 på menylinjen. To programtillegg med ulike barPriority-verdier for den samme
tittelen kappes: det som ble lastet inn sist, vinner, men siden begge som regel erklærer
den samme rangen for en gitt meny, betyr det ikke noe. Se PLUGIN_ARCHITECTURE.md §13 for
hele rekkefølgemodellen.
Hva som IKKE hører hjemme her¶
Verten tolker de feltene som er beskrevet ovenfor, og ser bort fra alt annet — finn ikke på felter; en ukjent nøkkel er i stillhet dødvekt.