[PYTHON] Plugin pour ajouter des symboles variables (Sublime Text) Description

introduction

Ecrire «$» après avoir écrit ou copié des variables en PHP est un problème, n'est-ce pas? J'ai écrit un plug-in qui l'exécute avec une seule commande, je vais donc le présenter brièvement.

De plus, j'ai écrit un article Utiliser des extraits sublimes auparavant. Il décrit également comment appeler un extrait de code avec un plug-in, donc si vous êtes intéressé, jetez un œil.

Après avoir lu cet article, vous en saurez beaucoup sur les plugins:

--Comment passer des variables aux symboles avec des raccourcis clavier

De plus, il peut être appliqué à autre chose que PHP, veuillez donc le modifier à votre guise.

Explication du programme

Tout d'abord, j'écrirai le texte intégral.

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)

Les raccourcis clavier qui appellent ce plug-in sont:


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

Vous pouvez transmettre des valeurs au plug-in avec ʻargs`.

J'expliquerai en détail ci-dessous, mais cela peut être plus facile à comprendre si vous vous référez à la [Référence API] de Sublime (https://www.sublimetext.com/docs/3/api_reference.html).

Fonction principale

La fonction principale est définie comme suit.


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

Assurez-vous de définir «self» et «edit »car ce sont des promesses. La valeur transmise au plug-in est stockée dans «** args».

Obtenez le mot

Le mot est acquis dans les deux lignes suivantes. self.view.sel () [0] .begin () obtient la position actuelle du curseur, et self.view.word () obtient la région de ce mot. En entrant ceci dans self.view.substr (), le mot sélectionné est entré dans current_word.


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

Ajouter un symbole

Vient ensuite l'ajout de symboles. Tout d'abord, juste au cas où, checkIfVariable () vérifie si le mot sélectionné est une variable.


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

Vérifiez si le mot sélectionné est une variable. J'utilise une expression régulière. La gestion des erreurs lorsque reg est indéfini est ignorée. Excusez-moi.


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

Ensuite, ajoutez un symbole.


    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)

Ici, le fait est que ce qui est passé au troisième argument n'est pas "current_word" mais "current_word_region". C'est parce que la fonction Region.begin () est utilisée pour obtenir la position pour ajouter le symbole. Après avoir obtenu la position, ajoutez un symbole avec self.view.insert (). Vous devriez pouvoir ajouter votre chaîne préférée après le mot en utilisant Region.end ().

Résumé

C'était une explication approximative, mais qu'en est-il? Je n'étais pas tout à fait sûr du plug-in Sublime au début, mais j'ai réussi à le comprendre en regardant divers exemples de programmes. J'espère que cet article pourra en être un exemple. Pendant que j'écrivais cet article, j'ai remarqué qu'il semble que l'on puisse déterminer automatiquement si le script que j'écris est PHP ou non. J'essaierai quand j'aurai le temps.

Recommended Posts

Plugin pour ajouter des symboles variables (Sublime Text) Description
Ajout de la fonction de réussite à Sublime Text
Créez un plugin qui vous permet de rechercher les onglets Sublime Text 3 en Python
Rappels du plug-in Sublime Text "Inline" dans le générateur
Personnalisez les raccourcis du bloc-notes Jupyter pour qu'ils ressemblent à du texte sublime
Liens pour faire ce que vous voulez avec Sublime Text
Ajoutons-le à la variable d'environnement à partir de la commande ~