1

Я пытаюсь добавить uncrustify для моего C++ форматирования кода в Sublime Editor 2.

Я знаю, что есть несколько способов запустить внешний процесс в SE2. Но главная проблема в том, что я не могу обновить буфер (просмотр) моим кодом, когда форматирование завершено.

Может кто-нибудь набросать плагин, который будет запускать внешний процесс на содержимое текущего буфера, а затем обновлять его?

1 ответ1

2

Следующий текстовый плагин заменяет все строчные буквы в файле их заглавными эквивалентами. Вызов 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" }

До:

Скриншот

После:

Скриншот

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .