
Estou tentando adicionar uncrustify para minha formatação de código C++ no Sublime Editor 2.
Eu sei que existem algumas maneiras de executar processos externos no SE2. Mas o principal problema é que não consigo atualizar o buffer (view) com o meu código, quando a formatação é feita.
Alguém pode esboçar um plugin que execute um processo externo no conteúdo do buffer atual e depois atualize-o?
Responder1
O plugin de texto a seguir substitui todas as letras minúsculas do arquivo por seu equivalente em maiúsculas. A bash -c
chamada foi uma solução alternativa para fornecer um exemplo útil para o caso (incomum) de um comando agindo em uma entrada de argumento grande: geralmente eles lidam com arquivos ou entrada padrão.
Para usar seu próprio comando, substitua as três primeiras entradas da lista no primeiro Popen
argumento pelas suas, o último é todo o conteúdo do buffer.
import sublime, sublime_plugin, subprocess
def insert_output(view, edit):
r = sublime.Region(0, view.size())
try:
proc = subprocess.Popen( [ "bash", "-c", 'echo "$0" | tr [a-z] [A-Z]', view.substr(r) ], stdout=subprocess.PIPE )
output = proc.communicate()[0]
view.replace(edit, r, output)
except:
pass
class ReplaceWithOutputCommand(sublime_plugin.TextCommand):
def run(self, edit):
e = self.view.begin_edit()
insert_output(self.view, e)
self.view.end_edit(e)
Para criar um item de menu, adicione uma entrada como a seguinte Main.sublime-menu
no User
pacote:
{"command": "replace_with_output", "caption": "Replace with Output" }
Antes:
Depois: