[PYTHON] Plugin zum Hinzufügen variabler Symbole (Sublime Text) Beschreibung

Einführung

Das Schreiben von "$" nach dem Schreiben oder Kopieren von Variablen in PHP ist ein Problem, nicht wahr? Ich habe ein [Plug-In] geschrieben (https://github.com/plsplsme/sublime_text/blob/master/add_variable_symbol.py), das dies mit einem einzigen Befehl ausführt, daher werde ich es kurz vorstellen.

Außerdem habe ich zuvor einen Artikel Sublime Snippets verbrauchen geschrieben. Außerdem wird beschrieben, wie Sie ein Snippet mit einem Plug-In aufrufen. Wenn Sie also interessiert sind, schauen Sie bitte.

Nachdem Sie diesen Artikel gelesen haben, erfahren Sie viel über Plugins:

Darüber hinaus kann es auf andere als PHP angewendet werden. Bitte ändern Sie es nach Ihren Wünschen.

Programmerklärung

Zunächst werde ich den vollständigen Text schreiben.

import sublime, sublime_plugin
import re

class AddVariableSymbol(sublime_plugin.TextCommand):
    regs = {'PHP':'[a-zA-Z0-9_]+'}
    symbols = {'PHP':'$'}

    def run(self, edit, **args):
        #get current word
        current_word_region = self.view.word(self.view.sel()[0].begin())
        current_word = self.view.substr(current_word_region)

        #add symbol
        if (self.checkIfVariable(current_word,args['language'])):
            self.addSymbol(edit,current_word_region,args['language'])

    #chck if the string is variable
    def checkIfVariable(self,string,lang):
        reg = self.regs[lang]
        if (re.match(reg,string)):
            return True
        else:
            return False

    #add symbol to the top of word
    def addSymbol(self,edit,current_word_region,lang):
        symbol = self.symbols[lang]
        add_point = current_word_region.begin()
        self.view.insert(edit, add_point, symbol)

Die Tastenkombinationen, die dieses Plug-In aufrufen, sind:


    { "keys": ["alt+4"], "command": "add_variable_symbol", "args": {"language": "PHP"}},

Sie können Werte mit args an das Plug-In übergeben.

Ich werde es im Folgenden ausführlich erläutern, aber es ist möglicherweise einfacher zu verstehen, wenn Sie auf Sublimes API-Referenz verweisen.

Hauptfunktion

Die Hauptfunktion ist wie folgt definiert.


    def run(self, edit, **args):

Stellen Sie sicher, dass Sie "self" und "edit" als Versprechen definieren. Der an das Plug-In übergebene Wert wird in ** args gespeichert.

Holen Sie sich das Wort

Das Wort wird in den folgenden zwei Zeilen erfasst. self.view.sel () [0] .begin () ruft die aktuelle Cursorposition ab und self.view.word () ruft die Region dieses Wortes ab. Durch Eingabe in "self.view.substr ()" wird das ausgewählte Wort in current_word eingegeben.


        #get current word
        current_word_region = self.view.word(self.view.sel()[0].begin())
        current_word = self.view.substr(current_word_region)

Symbol hinzufügen

Als nächstes werden Symbole hinzugefügt. Zunächst prüft checkIfVariable () für alle Fälle, ob das ausgewählte Wort eine Variable ist.


        if (self.checkIfVariable(current_word,args['language'])):
            self.addSymbol(edit,current_word_region,args['language'])

Überprüfen Sie, ob das ausgewählte Wort eine Variable ist. Ich benutze einen regulären Ausdruck. Fehlerbehandlung, wenn reg unbestimmt ist, wird übersprungen. Entschuldigung.


    def checkIfVariable(self,string,lang):
        reg = self.regs[lang]
        if (re.match(reg,string)):
            return True
        else:
            return False

Fügen Sie als Nächstes ein Symbol hinzu.


    def addSymbol(self,edit,current_word_region,lang):
        symbol = self.symbols[lang]
        add_point = current_word_region.begin()
        self.view.insert(edit, add_point, symbol)

Hier geht es darum, dass das, was an das dritte Argument übergeben wird, nicht "current_word", sondern "current_word_region" ist. Dies liegt daran, dass die Funktion Region.begin () verwendet wird, um die Position zum Hinzufügen des Symbols abzurufen. Fügen Sie nach dem Abrufen der Position ein Symbol mit "self.view.insert ()" hinzu. Sie sollten in der Lage sein, Ihre Lieblingszeichenfolge nach dem Wort mit "Region.end ()" hinzuzufügen.

Zusammenfassung

Es war eine grobe Erklärung, aber wie wäre es damit? Ich war mir über das Sublime-Plug-In zunächst nicht sicher, aber ich habe es anhand verschiedener Programmbeispiele verstanden. Ich hoffe, dieser Artikel kann ein Beispiel dafür sein. Als ich diesen Artikel schrieb, bemerkte ich, dass anscheinend automatisch festgestellt werden kann, ob das aktuell geschriebene Skript PHP ist. Ich werde es versuchen, wenn ich Zeit habe.

Recommended Posts

Plugin zum Hinzufügen variabler Symbole (Sublime Text) Beschreibung
Leistungsfunktion zu Sublime Text hinzugefügt
Erstellen Sie ein Plugin, mit dem Sie in Python nach Registerkarten für Sublime Text 3 suchen können
"Inline" Sublime Text Plug-In Rückrufe im Generator
Passen Sie die Verknüpfungen für Jupyter-Notizbücher so an, dass sie wie erhabener Text aussehen
Links, um mit Sublime Text zu tun, was Sie wollen
Fügen wir es der Umgebungsvariablen mit dem Befehl ~ hinzu