
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" }
前に:
後: