如何将命令的结果存储到变量?
问题描述:
我正在尝试构建一个上下文菜单,它将显示我所有包和其资源的树结构。这样可怕的小画家绘制的东西,我画:如何将命令的结果存储到变量?
我已经安装了PackageResourceViewer
。它提供了在窗口中显示的命令。但我想用它们来填充这些子上下文menues:
-
get_packages_list
,我认为将填充第一子菜单(包) -
list_package_files
应该填充每个随后的子菜单
但是,我不知道如何获得这些输出到上下文菜单。我一直在看python(为此写一个崇高的插件)。
如何将这些命令的输出转换为变量?
我的代码
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)
NameError: global name 'package_resource_viewer' is not defined
很显然,我还没有得到远,但我甚至不能这个的输出显示在缓冲区中。
答
您可以导入并访问这些命令。我做了一个最简单的例子,它将软件包打印到当前视图。 但是,输出到上下文/侧边栏菜单似乎更难,因为它们通常是静态的,您不能动态地创建一个。 (您可以尝试通过命令创建静态菜单文件。)
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))