This page has been robot translated, sorry for typos if any. Original content here.

Écrire un simple plugin pour Sublime Text 2

Par sujet:


Sublime Text 2 FAQSublime Text 2 FAQ

L'exemple est réel, de la pratique d'ingénierie. Traduction du nombre sélectionné dans le texte du système de nombre décimal en nombre hexadécimal. La fonctionnalité doit être accessible depuis le menu principal et le menu contextuel, ainsi que par la combinaison de touches Ctrl + Maj + H. Résultat de l'exécution: le nombre en hexa écrit en utilisant des chiffres et des lettres majuscules sans aucun caractère majuscule comme "0x". Si le texte sélectionné n'est pas un chiffre, faites-le avec la barre d'état. J'attire votre attention sur le fait que l'exemple est destiné à être simplifié au maximum, de sorte que pour les détails, l'essentiel ne soit pas perdu: la simplicité de création de plugins pour Sublime.

Ecrire un plugin

Cliquez sur Outils -> Nouveau plug-in ... et voyez la pièce. Nous changeons le nom de la classe et écrivons la fonctionnalité dans la méthode d'exécution. J'ai eu ce qui suit:

 importer sublime, sublime_plugin

 classe DecToHexCommand (sublime_plugin.TextCommand):
  MAX_STR_LEN = 10
  def run (self, edit):
  v = auto.view

  # Obtenir la valeur du premier bloc sélectionné
  dec = v.substr (v.sel () [0])

  # Remplacer le nombre décimal par un message d'erreur hexadécimal ou en sortie		
  si dec.isdigit ():
  v.replace (edit, v.sel () [0], hex (int (dec)) [2:]. upper ())
  sinon:
  # Couper les lignes trop longues qui ne rentrent pas dans la barre d'état 
  si len (dec)> self.MAX_STR_LEN:
  logMsg = dec [0: self.MAX_STR_LEN] + "..."
  sinon:
  logMsg = dec
  sublime.status_message ("\" "+ logMsg +" \ "n'est pas un nombre décimal!")	

Nous enregistrons là où l'éditeur avec le nom dec_to_hex.py offrira

Ajouter des éléments de menu. Nous enregistrons la combinaison de clavier.

Commençons par les "raccourcis clavier".

Dans le menu, cliquez sur Préférences -> Key Bindings-User . Un fichier avec les paramètres au format JSON s'ouvre. Très probablement vide. Ajoutez une ligne à cela.

  {"keys": ["ctrl + shift + h"], "command": "dec_to_hex"}

Nous économisons Tout Le principe peut déjà être utilisé. Si cela ne fonctionne pas, il vaut la peine de regarder ce qui est écrit sur la console (Ctrl + `)

Pour ajouter un élément au menu contextuel, créez un fichier de menu Context.sublime avec le contenu suivant:

 [ 
  { 
  "commande": "dec_to_hex"
  } 
 ] 

Je pense que, comme dans le cas précédent, tout est clair sans commentaire.

Nous enregistrons dans le même répertoire que le plugin.

C'est à dire % USERPROFILE% \ AppData \ Roaming \ Sublime Text 2 \ Packages \ User , pour les utilisateurs Windows. Au même endroit, nous créons le fichier Main.sublime-men u. J'ai pensé que cet élément serait le plus pertinent dans le menu Edition, alors j'ai écrit ceci dans le fichier de menu Main.sublime-menu:

 [ 
  { 
  "id": "edit", 
  "enfants": 
  [ 
  {"commande": "dec_to_hex"} 
  ] 
  } 
 ]

Nous vérifions. Les éléments portant le nom Déc. En hexadécimal doivent apparaître dans le menu principal et le menu contextuel.

Références:

www.sublimetext.com/docs/api-reference - Référence des API de plug- in

www.sublimetext.com/download - Télécharger

www.sublimetext.com/dev - Dev Builds. J'utilise la version dev, je n'ai pas encore attrapé les bugs.

net.tutsplus.com/tutorials/python-tutorials/how-to-create-a-sublime-text-2-plugin/ - Un article sur le même sujet en anglais