我正在尝试在 Sublime Editor 2 中添加 uncrustify 来格式化我的 C++ 代码。
我知道在 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" }
前:
后: