2016-12-29 10 views
1

私はすべての私のパッケージとそのリソースのツリー構造を表示するコンテキストメニューを構築しようとしています。この恐ろしいMSペイントレンダリングのようなものは、私が描いた:コマンドの結果を変数に格納する方法は?

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)) 
関連する問題