
Я пытаюсь добавить uncrustify для форматирования моего кода C++ в Sublime Editor 2.
Я знаю, что есть несколько способов запустить внешний процесс в SE2. Но главная проблема в том, что я не могу обновить буфер (представление) с моим кодом, когда форматирование завершено.
Может ли кто-нибудь написать плагин, который будет запускать внешний процесс над содержимым текущего буфера, а затем обновлять его?
решение1
Следующий текстовый плагин заменяет все строчные буквы в файле на их эквивалент в верхнем регистре. bash -c
Вызов был обходным путем, чтобы предоставить полезный пример для (необычного) случая команды, действующей на большой аргумент ввода: обычно они имеют дело с файлами или стандартным вводом.
Чтобы использовать собственную команду, замените первые три записи списка в первом Popen
аргументе своими собственными, последняя — все содержимое буфера.
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)
Main.sublime-menu
Чтобы создать пункт меню, добавьте в пакет запись, например следующую User
:
{"command": "replace_with_output", "caption": "Replace with Output" }
До:
После: