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

Ecrire un plug-in simple pour Sublime Text 2

Par sujet:


Sublime Text 2 FAQSublime Text 2 FAQ

Un exemple est réel, de la pratique d'ingénierie. Traduction du nombre sélectionné dans le texte de décimal à hexadécimal. La fonctionnalité doit être accessible à partir du menu principal et du menu contextuel, ainsi qu'en appuyant sur Ctrl + Maj + H. Résultat de l'exécution: le nombre en hexadécimal est écrit en utilisant les lettres majuscules et les lettres sans caractères principaux comme "0x". Si le texte sélectionné n'est pas un nombre, nous le jurons avec la barre d'état. J'attire votre attention sur le fait que l'exemple est destiné à être simplifié au maximum, afin que les détails ne soient pas perdus: la simplicité de créer des plug-ins pour Sublime.

Ecrire un plugin

Cliquez sur Outils -> Nouveau plugin ... et voyez la pièce à usiner. Changez le nom de la classe et écrivez le fonctionnel dans la méthode d'exécution. J'ai eu ce qui suit:

 importer sublime, sublime_plugin

 class DecToHexCommand (sublime_plugin.TextCommand):
  MAX_STR_LEN = 10
  def run (auto, éditer):
  v = self.view

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

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

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

Ajouter des éléments de menu Nous prescrivons une combinaison de clavier.

Commençons par les "raccourcis clavier".

Dans le menu, cliquez sur Préférences -> Liaisons de touches - Utilisateur . Le fichier avec les paramètres au format JSON est ouvert. Très probablement vide. Nous ajoutons une ligne à cela.

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

Nous économisons C'est tout. Le principe peut déjà être utilisé. Si cela ne fonctionne pas, vous devriez voir ce qui est écrit à ce sujet dans la console (Ctrl + `).

Pour ajouter un élément au menu contextuel, créez un fichier Context.sublime-menu du 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 dans lequel le plugin a été sauvegardé.

Ie. % USERPROFILE% \ AppData \ Roaming \ Sublime Texte 2 \ Packages \ Utilisateur , 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, donc dans le fichier Main.sublime-menu j'ai écrit ce qui suit:

 [ 
  { 
  "id": "éditer", 
  "enfants": 
  [ 
  {"commande": "dec_to_hex"} 
  ] 
  } 
 ]

Vérification Dans le menu principal et le contexte devrait apparaître des éléments avec le nom Dec To Hex

Références:

www.sublimetext.com/docs/api-reference - Référence de l'API du plugin

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

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

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