我正在尝试构建一个上下文菜单,该菜单将显示我所有包及其资源的树结构。像我这样可怕的MS Paint渲染:
我安装了PackageResourceViewer
。它提供在窗口中显示的命令。但是我想用它们来填充这些子上下文菜单:
[manager GET:url
parameters:nil
progress:^(NSProgress * _Nonnull downloadProgress) {
code
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
code
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//this section will be executed
}];
我认为会填充第一个子菜单(包)get_packages_list
但是,我不确定如何将这些输出输出到上下文菜单中。我一直在看python(为此写一个崇高的插件)。
如何将这些命令的输出变为变量?
<小时/> 我的代码
list_package_files
但它给了我这个错误:
import sublime
import sublime_plugin
class ExampleCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.insert(edit, 0, package_resource_viewer)
>>> view.window().run_command("example") Traceback (most recent call last): File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 818, in run_ return self.run(edit) File "C:\Users\heete\AppData\Roaming\Sublime Text 3\Packages\User\hello_world.py", line 7, in run self.view.insert(edit, 0, package_resource_viewer)
显然我还没有走远,但我甚至无法将此输出显示在缓冲区中。
答案 0 :(得分:1)
您可以导入和访问这些命令。我做了一个最小的例子,它将包打印到当前视图。 但是输出到上下文/侧边栏菜单似乎更难,因为它们通常是静态的,你不能只是动态创建一个。 (您可以尝试通过命令创建静态菜单文件。)
import sublime_plugin
from PackageResourceViewer.package_resources import (
get_packages_list, list_package_files
)
class ExampleListPackagesCommand(sublime_plugin.TextCommand):
def run(self, edit):
packages = get_packages_list()
insert_sb = []
insert_sb.append("Installed Packages:")
insert_sb.extend(packages)
for package in packages:
insert_sb.append("")
insert_sb.append(package)
package_files = list_package_files(package)
insert_sb.extend("\t" + pf for pf in package_files)
self.view.insert(edit, 0, "\n".join(insert_sb))