외부 프로그램을 통해 Sublime Text 2 버퍼 내용 필터링

외부 프로그램을 통해 Sublime Text 2 버퍼 내용 필터링

Sublime Editor 2에서 C++ 코드 서식 지정을 위해 uncrustify를 추가하려고 합니다.

SE2에서 외부 프로세스를 실행하는 몇 가지 방법이 있다는 것을 알고 있습니다. 하지만 가장 큰 문제는 포맷이 완료되면 내 코드로 버퍼(뷰)를 업데이트할 수 없다는 것입니다.

누군가 현재 버퍼의 내용에 대해 외부 프로세스를 실행하고 업데이트하는 플러그인을 스케치할 수 있습니까?

답변1

다음 텍스트 플러그인은 파일의 모든 소문자를 해당 대문자로 바꿉니다. 이 bash -c호출은 큰 인수 입력에 대해 작동하는 명령의 (흔하지 않은) 경우에 대한 유용한 예를 제공하기 위한 해결 방법이었습니다. 일반적으로 파일이나 표준 입력을 처리합니다.

자신만의 명령을 사용하려면 첫 번째 Popen인수의 처음 3개 목록 항목을 자신의 것으로 바꾸세요. 마지막 인수는 전체 버퍼 내용입니다.

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" }

전에:

스크린샷

후에:

스크린샷

관련 정보