如何将命令的结果存储到变量?

时间:2016-12-29 15:57:47

标签: python sublimetext3

我正在尝试构建一个上下文菜单,该菜单将显示我所有包及其资源的树结构。像我这样可怕的MS Paint渲染:

enter image description here

我安装了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)

显然我还没有走远,但我甚至无法将此输出显示在缓冲区中。

1 个答案:

答案 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))