
Estoy intentando agregar uncrustify para formatear mi código C++ en Sublime Editor 2.
Sé que hay algunas formas de ejecutar procesos externos en SE2. Pero el principal problema es que no puedo actualizar el búfer (vista) con mi código cuando finaliza el formateo.
¿Alguien puede esbozar un complemento que ejecute un proceso externo en el contenido del búfer actual y luego lo actualice?
Respuesta1
El siguiente complemento de texto reemplaza todas las letras minúsculas del archivo con su equivalente en mayúscula. La bash -c
llamada fue una solución alternativa para proporcionar un ejemplo útil para el caso (poco común) de un comando que actúa sobre una entrada de argumentos grande: generalmente tratan con archivos o archivos estándar.
Para usar su propio comando, reemplace las primeras tres entradas de la lista en el primer Popen
argumento con el suyo propio; la última es el contenido completo del búfer.
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 crear un elemento de menú, agregue una entrada como la siguiente Main.sublime-menu
en el User
paquete:
{"command": "replace_with_output", "caption": "Replace with Output" }
Antes:
Después: