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

Un exemple est réel, tiré de la pratique du génie. Traduction du nombre sélectionné dans le texte du système de nombre décimal en nombre hexadécimal. La fonctionnalité doit être accessible à partir du menu principal et du menu contextuel, ainsi que de la combinaison de touches Ctrl + Maj + H. Résultat de l'exécution: le nombre en hexa enregistré avec des chiffres et des lettres majuscules sans caractères majuscules 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 plugin ... 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 Tous 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 sauvegardons 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 approprié dans le menu Edition, alors j'ai écrit ce qui suit dans le fichier Main.sublime-menu:

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

Nous vérifions. Dans le menu principal et les éléments du menu contextuel doivent apparaître avec le nom Dec To Hex

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