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.
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).
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».
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)
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 ()
.
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