2017-08-31 1 views
2

Je fais beaucoup de projets JavaScript, et une fonction géniale de PHPStorm me manque. Maintenant, je ne comprends pas Python autant. J'espère que vous pouvez m'aider.Custom 'console.log' plugin Sublime Text 3

C'est ce que je veux:

'test'.log => console.log('test'); 
test.log => console.log(test); 

Donc, avec un seul tabtrigger .log

Je veux récupérer quoi que ce soit avant la .log. Et puis je vais le transformer. Comment puis-je faire ceci?

Répondre

3

Vous pouvez simplement créer un plugin pour récupérer le texte avant .log et de le remplacer dans la vue:

import re 

import sublime 
import sublime_plugin 


class PostSnippetLogCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     view = self.view 
     for sel in view.sel(): 
      pos = sel.b 
      text_before = view.substr(sublime.Region(view.line(pos).a, pos)) 

      # match the text before in reversed order 
      m = re.match(r"gol\.(\S*)", text_before[::-1]) 
      if not m: 
       continue 
      # retrieve the text before .log and reestablish the correct order 
      text_content = m.group(1)[::-1] 
      # create the replacements text and region 
      replace_text = "console.log({});".format(text_content) 
      replace_reg = sublime.Region(pos - len(m.group(0)), pos) 
      # replace the text 
      view.replace(edit, replace_reg, replace_text) 

ajouter ensuite cette combinaison de touches pour déclencher la commande si elle est préfixé avec .log dans un document javascript.

{ 
    "keys": ["tab"], 
    "command": "post_snippet_log", 
    "context": 
    [ 
     { "key": "selector", "operand": "source.js" }, 
     { "key": "preceding_text", "operator": "regex_contains", "operand": "\\.log$" }, 
    ], 
},