透過外部程式過濾 Sublime Text 2 緩衝區內容

透過外部程式過濾 Sublime Text 2 緩衝區內容

我正在嘗試在 Sublime Editor 2 中為我的 C++ 程式碼格式添加 uncrustify。

我知道有一些方法可以在 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" }

前:

螢幕截圖

後:

螢幕截圖

相關內容