
Ich versuche, Uncrustify für meine C++-Codeformatierung in Sublime Editor 2 hinzuzufügen.
Ich weiß, dass es einige Möglichkeiten gibt, externe Prozesse in SE2 auszuführen. Das Hauptproblem besteht jedoch darin, dass der Puffer (die Ansicht) mit meinem Code nicht aktualisiert werden kann, wenn die Formatierung abgeschlossen ist.
Kann jemand ein Plug-In entwerfen, das externe Prozesse auf dem Inhalt des aktuellen Puffers ausführt und ihn dann aktualisiert?
Antwort1
Das folgende Text-Plugin ersetzt alle Kleinbuchstaben in der Datei durch ihre Großbuchstaben. Der bash -c
Aufruf war ein Workaround, um ein nützliches Beispiel für den (ungewöhnlichen) Fall eines Befehls bereitzustellen, der auf große Argumenteingaben einwirkt: Normalerweise handelt es sich dabei um Dateien oder Standardeingaben.
Um Ihren eigenen Befehl zu verwenden, ersetzen Sie die ersten drei Listeneinträge im ersten Popen
Argument durch Ihre eigenen, der letzte ist der gesamte Pufferinhalt.
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)
Um ein Menüelement zu erstellen, fügen Sie Main.sublime-menu
dem User
Paket einen Eintrag wie den folgenden hinzu:
{"command": "replace_with_output", "caption": "Replace with Output" }
Vor:
Nach: