Hyppää sisältöön

Python-liitännäiset

Modular Text Editor lataa Python-liitännäiset natiivien C++-liitännäisten rinnalla saman liitännäishallintapinnan kautta. Python-liitännäinen on kansio, joka sisältää yhden plugin.json-tiedoston ja vähintään yhden .py-tiedoston, jossa on ylätason funktio register(ctx).

Editori käynnistää pienen työntekijäaliprosessin liitännäistä kohti, ajaa funktion register(ctx) sen sisällä ja välittää komennot, valikot ja tapahtumat RPC-kanavan yli. Liitännäisesi ei koskaan kosketa Qt:tä tai Scintillaa — ctx-olio on tavallinen Python-palveluhakemisto.

Mikä toimii tänään (vaiheet 1–5: ominaisuudet valmiit)

Vaihe 1: komennot, valikkokohdat, tapahtumatilaukset (avaa / sulje / tallenna / aktiivinen asiakirja vaihtui / valinta vaihtui / sovellus lopettaa), loki ja tilarivi.

Vaihe 2: editorin puskuri, valinta, kohdistin, haku, sisennys ja tiedostotoiminnot kohteen ctx.editor.* kautta, pysyvät asetukset kohteen ctx.settings.* kautta ja vain luettavat sovellusasetukset kohteen ctx.app_settings.* kautta, täydennystoimittajat (lyhyellä näppäinpainalluskohtaisella määräajalla) koristeella @ctx.completions.provider(...) sekä ctx.data_dir() liitännäiskohtaiseen kirjoitettavaan hakemistoon.

Vaihe 3: kuvailevat telakkapaneelit funktiolla ctx.docks.add_panel(...), asetussivut funktiolla ctx.settings_page.register(...), molemmat rakennettuina mte.ui-lomakerakentajilla, sekä ajonaikainen pääsy ohjausobjekteihin funktioilla ctx.ui.get / ctx.ui.set.

Vaihe 4: .mteplugin-pakettien asennusohjelma — pakkaa liitännäiskansiosi zipiksi, asenna se kohdasta Asetukset → Liitännäiset (katso Paketointi).

Vaihe 5: liitännäiskohtaiset virtuaaliympäristöt — ilmoita pip-riippuvuudet kentässä pyRequires, niin editori valmistelee virtuaaliympäristön liitännäisellesi ensimmäisellä käynnistyksellä (katso Riippuvuudet); permissions-ilmoitus, joka näytetään liitännäissivulla; ja virtaava ja peruutettava RPC-alusta (ei vielä liitännäisille näkyvää API:ta — se pohjustaa tulevia tekoälypalveluita).

Vähimmäismuotoinen liitännäinen

Luo <any-folder>/hello/ näillä kahdella tiedostolla.

hello/plugin.json
{
  "id":         "org.example.hello",
  "name":       "Hello (Python)",
  "version":    "1.0.0",
  "apiVersion": 1,
  "entry":      "python",
  "module":     "main",
  "menus": [
    { "title": "Plugins", "barPriority": 570, "itemPriority": 100 }
  ]
}
hello/main.py
import mte  # noqa: F401


def register(ctx):

    @ctx.commands.command(id="hello.sayHi",
                          title="Say Hi",
                          shortcut="Ctrl+Alt+H")
    def _say_hi():
        ctx.status.show("Hello from Python!", timeout_ms=3000)
        ctx.log.info("hello: Say Hi invoked")

    ctx.menus.add_item("Plugins/Hello/Say Hi", "hello.sayHi")

Pakkaa kansio zipiksi nimellä hello.mteplugin ja asenna se kohdasta Asetukset → Liitännäiset → Asenna liitännäinen... — tai pudota kansio käyttäjäkohtaiseen liitännäishakemistoosi käsin (katso Paketointi). Käynnistä editori uudelleen, niin Plugins → Hello → Say Hi ilmestyy valikkopalkkiin.

Mitä koneella täytyy olla

  • Python 3.9+ -tulkki, joka on tavoitettavissa jommallakummalla tavalla:
    • PATH-muuttujassa (py.exe, python.exe tai python3.exe Windowsissa; python3 macOS:ssä ja Linuxissa), tai
    • osoitettuna ympäristömuuttujalla MTE_PYTHON (joko absoluuttisena polkuna python.exe-ohjelmaan tai pelkkänä nimenä, joka haetaan PATH-muuttujasta).
  • Ei pip-paketteja: vaiheen 1 asiakaskirjasto mte tulee editorin mukana ja lisätään polkuun sys.path puolestasi.

Editori kirjaa käynnistyksessä, minkä tulkin se valitsi:

PluginHost: MTE_PYTHON is not set; falling back to PATH.
PluginHost: located Python on PATH: py.exe -> C:/Windows/py.exe
PluginHost: Python plugin backend enabled; interpreter=..., worker=.../mte_python_host.py

Jos näet tekstin Python plugins disabled, hyppää kohtaan Vianetsintä.

Mitä liitännäisesi voi tehdä

Kukin alla oleva kohta linkittää API-osioonsa:

Kyky Osio
Rekisteröidä komentoja (valinnaisine pikanäppäimineen) ctx.commands
Tarjota valikkokohtia ja erottimia ctx.menus
Tilata jokainen editoritapahtuma (asiakirjat, teksti, valinta, asetukset, teema, työtila …) ja julkaista työtilaa koskevat ctx.events ja Tapahtumadokumentaatio
Kirjoittaa editorin diagnostiikkavirtaan ctx.log
Lähettää ohimeneviä tilariviviestejä, omistaa pysyvä tilariviosio ctx.status
Lukea ja muokata puskureita, valintoja (myös useita kohdistimia), kohdistinta, tiedostoja, hakua, kirjanmerkkejä, merkintöjä, URL-korostusta, sisennystä ja jaetun näkymän ryhmiä ctx.editor
Luetella kieliä, lukea ja vaihtaa asiakirjan kieli ja tarjota kielimääritys ctx.languages
Tallentaa liitännäiskohtaista kokoonpanoa, lukea sovelluksenlaajuisia asetuksia (mte.keys) ja lukea asiakirjakohtaisia asetuksia .editorconfig-kerroksineen ctx.settings / ctx.app_settings / ctx.document_settings
Julkaista diagnostiikkaa (aaltoviivat ja marginaalimerkit) ctx.diagnostics
Rekisteröidä teemoitettavia värejä omaan käyttöliittymääsi ctx.theme
Avata vierekkäisen vertailunäkymän ctx.compare
Rekisteröidä täydennystoimittajan (näppäinpainalluskohtaisella määräajalla) ctx.completions
Paikantaa kirjoitettavan liitännäiskohtaisen hakemistosi ctx.data_dir()
Lisätä kuvailevan telakkapaneelin, tuoda sen esiin tai piilottaa se komennosta ctx.docks ja mte.ui
Lisätä sivun Asetuksiin ctx.settings_page
Lukea ja kirjoittaa paneelien ohjausobjekteja ajon aikana ctx.ui
Kytkeä pysyvän valintamerkin valikkokohtaan ctx.menus.set_item_checked
Harmaannuttaa valikkokohdan, kun sen komento ei voi ajaa ctx.menus.set_item_enabled

Seuraavaksi