• STATISTIQUES
  • Il y a eu un total de 3 membres et 7299 visiteurs sur le site dans les dernières 24h pour un total de 7 302 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 2 608
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58



  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Macro Sublime Text 2 : PrivatePaste
02-02-2013, 23h56 (Modification du message : 02-02-2013, 23h58 par Dobry.)
Message : #1
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
Macro Sublime Text 2 : PrivatePaste
Je suis un adorateur de sublime text 2, qui je trouve pratique, pas très lourd, TRES modulable (pour ne pas dire incroyablement modulable).
Pour autant, il est vrai que par moment, il faut mettre les mains dans le code afin d'implementer une fonctionnalitée manquante (même s'il est toujours interressant de jetter un coup d'oeil sur les modules déjà existants !).
AInsi, voici ma dernière macro pour Subl2, qui permet de créer un fichier sur http://privatepaste.com avec le code du fichier en cour, ou, si cette dernière existe, la selection actuelle du fichier (un bout de code, une fonction ou autre).

Code PYTHON :

# Sublime Text 2 PrivatePaste Plugin !
# Create a file in your Sublime Text 2 plugin folder named privatepaste.py
# (by default /home/USERNAME/.config/sublime-text-2/Packages/User)
# Add a shortcut "Preferences > Key Bindings - User" with the following values
# { "keys": ["ctrl+&"], "command": "private_paste"} (change the "keys" value !)
#
# <3 Sublime Text 2, Enjoy
# By ex0ns
# Thank's to Kallimero, Fr0g & AppleStorm !

import sublime, sublime_plugin, urllib, urllib2, re, threading, os.path

extensions = {"" : "No Formatting", "cpp" : "C++", "py" : "Python", "c" : "C", "css" : "CSS", "java" : "Java",
              "js" : "JavaScript", "rb" : "Ruby", "asm" : "NASM", "html" : "HTML", "php" : "PHP", "pl" : "Perl" }
class PrivatePasteCommand(sublime_plugin.TextCommand):
        def run(self, edit):
                if self.view.sel()[0].empty():
                        self.code = self.getCode(self.view.file_name())
                else:
                        self.code = self.view.substr(self.view.sel()[0])
                self.extension =  os.path.splitext(self.view.file_name())[1][1:]
                print self.extension
                thread = threading.Thread(target=self.backgroundJob)
                thread.start()

        def getCode(self, file):
                return open(file).read()

        def backgroundJob(self):
                try:
                  host = "http://privatepaste.com/save"
                  params = urllib.urlencode([("paste_content", self.code ),
                                             ("formatting", extensions[self.extension] if self.extension in extensions else "No Formatting" ),
                                             ("line_number", "on"),
                                             ("expire", "3600"),
                                             ("secure_past", "off"),
                                             ("secure_past_key", "")
                                            ])
                  headers = {"Content-type": "application/x-www-form-urlencoded"}
                  req = urllib2.urlopen(urllib2.Request(host, params, headers)).read();
                  pasteid = re.search("<title>privatepaste.com :: Paste ID (.*)</title>", req)
                  sublime.error_message("http://privatepaste.com/" + pasteid.group(1))
                  #sublime.set_clipboard("http://privatepaste.com/" + pasteid.group(1))
                except:
                  sublime.error_message("Error while sending information")
 


Voici pour ce qui est du code, sa structure est celle imposée par la norme de sublime text 2 :
class PrivatePasteCommand(sublime_plugin.TextCommand) permet d'appeller une macro qui sera nommé private_paste.
Pour ce qui est de la ligne commenté, elle devrait copier automatiquement le lien généré dans votre Copy/Paste, chez moi elle fait crash Subl2, je ne sais pas pourquoi !
Pour ceux qui n'aurait jamais utilisé de plugin sur Subl2, allez dans le menu "Tools > New Plugin" copiez le code ci dessus et enregistrer le fichier dans le premier répertoire proposé (il est géré automatiquement par Subl2, évitez de le changer).
Il ne reste maintenant plus qu'a assigner cette nouvelle macro à un raccourci, dans le menu "Preferences > Keys Biding - User" ajoutez la ligne suivante :
Code BASH :
{ "keys": ["ctrl+&"], "command": "private_paste"}
(en modifiant le raccourci bien évidement)
Attention, il est possible que votre fichier soit vide lorsque vous l'ouvrez, dans ce cas, créez la structure suivante :
Code BASH :
[
        { "keys": ["ctrl+&"], "command": "private_paste"}
]


Et voilà !

Pour ce qui est des paramètres POST par défaut, je dois dire que c'est un choix que j'ai fait volontairement.
En effet, j'aurais très bien pu demander chaque information à l'utilisateur avant d'envoyer la requete, mais alors la requete devient presque aussi longue à faire que manuellement, or il me fallait quelque chose de rapide !
Cependant, libre à vous de modifier le code comme il vous plait (je pense tout de même integrer une detection de "formatting" en fonction de l'extension du fichier prochainement !). -> Chose faite dans la nouvelle version, quelle rapidité, je suis bluffé xD

Edit : j'étais motivé j'ai donc changé la structure pour n'avoir qu'une seule classe au lieu de deux, et faire un threading plus simple. J'ai également ajouté la concordance avec certains langages, par reconnaissance de l'extension (os.path est la solution la plus fiable que j'ai trouvé, mais si vous en connaissez d'autre, je suis preneur !).
Dites moi ce que vous en pensez Smile
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (2) -1 (0) Répondre
03-02-2013, 03h57
Message : #2
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Macro Sublime Text 2 : PrivatePaste
j'en avais entendu parler y'a quelques temps ici même ça avait l'air pas mal et je m'etais dit qu'il faudrait que j'essaye à l'occaz, là je pense tu viens de finir de me convaincre Wink
+1 (0) -1 (0) Répondre
04-02-2013, 22h08
Message : #3
ThibauT Hors ligne
Keyboard not found, press F1 to resume.
*



Messages : 348
Sujets : 6
Points: 69
Inscription : Jun 2012
RE: Macro Sublime Text 2 : PrivatePaste
Merci, c'est installé, et je sens que ça va m'être indispensable d'ici quelques jours :p
Martin Golding a écrit :"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."

Gnomino a écrit :et quand je suis payé je fais ce qu'on me demande :B
+1 (0) -1 (0) Répondre
05-02-2013, 08h22
Message : #4
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
RE: Macro Sublime Text 2 : PrivatePaste
Smile.
Merci ! Si tu as des idées d'amélioration n'hésite pas à me les faires parvenirs Smile (ou si tu remarques des bugs, ce qui doit être difficile sur 20lignes xD)
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (0) -1 (0) Répondre
05-02-2013, 12h03
Message : #5
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Macro Sublime Text 2 : PrivatePaste
ok apres test j'avoue je m'attendais à "un peu plus évolué", j'en demande peut etre beaucoups je sais pas... :p

le projet manque sans doute encore un peu de maturité, en termes d'ergonomie notament on aurait bien vu des trucs genre le plugin en question directement accessible par un menu ou la possibilité de réduire ST2 dans les tray icons pour la version windows, un menu de configuration peut etre aussi, modifier le fichier de conf c'est assez roots mais bon... ça reste un très bon IDE pour python au moins, je pense que je le garderais en tant que tel pour l'instant sans dézinguer notepad++ encore Wink

concernant la macro, sous windows j'ai modifié key : 'ctrl+1' au lieu de '&', le fichier va dans %APPDATA%/Sublime Text 2/Packages/User/ et y'a pas besoin de relancer st2 après avoir rajouté le binding ou quoi c'est pris en compte immédiatement
pour l'instant je me suis mangé un "error while sending" mais ça doit tenir à peu de choses
si t'as un lien vers de la doc pour coder des plugins st2 ça serait probablement bienvenu (j'ai pas encore compris d'où sortait le "private_paste" par exemple), en tous cas nice job Wink
+1 (0) -1 (0) Répondre
05-02-2013, 14h43
Message : #6
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
RE: Macro Sublime Text 2 : PrivatePaste
Merci pour ton retour !
Pour ce qui est du message d'erreur, cela vient probablement du fait que self.code est vide (je ne sais pas à quoi cela peu-être lié, peut être une particularité sous Windows...)
Pour ce qui est du developpement, je suis parti de http://sublimetext.info/docs/en/extensib...ugins.html et http://www.sublimetext.com/docs/2/api_reference.html qui sont les meilleurs sources que j'ai trouvé (c'est vrai que trouver une bonne vrai documentation serait sympa, plutôt qu'une liste API mais bon).
Pour ce qui est d'un tutoriel complet il y a http://net.tutsplus.com/tutorials/python...-2-plugin/ qui ne nous en apprend pas beaucoup plus que les liens précedents, mais qui fait intervenir du code python un petit peu plus complexe, mettant en avant la puissance de ce système de module (et sa facilité).
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (0) -1 (0) Répondre
05-02-2013, 16h12
Message : #7
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: Macro Sublime Text 2 : PrivatePaste
(05-02-2013, 14h43)Dobry a écrit : cela vient probablement du fait que self.code est vide (je ne sais pas à quoi cela peu-être lié, peut être une particularité sous Windows...)

non non en fait je te confirme que ça fonctionne comme il faut, ça venait de mon filtrage fw en sortie :p

en revanche le error_message() on peut pas le copier/coller sous windows, et je sais pas pourquoi le message_dialog() ça n'a pas l'air de lui plaire...
+1 (0) -1 (0) Répondre
05-02-2013, 18h35
Message : #8
Dobry Hors ligne
Tueur de lamouz
*



Messages : 206
Sujets : 25
Points: 73
Inscription : Aug 2011
RE: Macro Sublime Text 2 : PrivatePaste
Exact ! J'ai eu le même problème sur Fedora, crash instantanné avec le message_dialog, je n'ai pas compris pourquoi ! (tout comme set_clipboard, c'est pour cela que je l'ai commenté !)
Il faudrait que je regarde plus en profondeur le details! En attendant la solution peut être d'ouvrir la console (ctrl+` sur Linux) et de copier le texte directement depuis la bas (la console affiche les error_message)
Aestuārium Erudītiōnis

There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut