2016-12-29 96 views
1

我正在嘗試構建一個上下文菜單,它將顯示我所有包和其資源的樹結構。這樣可怕的小畫家繪製的東西,我畫:如何將命令的結果存儲到變量?

enter image description here

我已經安裝了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

很顯然,我還沒有得到遠,但我甚至不能這個的輸出顯示在緩衝區中。

回答

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)) 
相關問題