この記事はSublime Text 2 Advent Calendar 2012 の21日目の記事です。

きっかけ

  • Theme Phoenixを導入してから、SideBarがもっとカッコよくなったので、もともとずっと非表示してたが、最近表示している時間もどんどん増えています。
  • そうなると、SideBarに常に編集中のファイルをフォーカス項目にして頂きたい
  • フォーカス項目という言葉がわかりづらいかもしれませんが、ようは、下記のように、青色になっている項目のことです

調査過程

  • 編集中ファイルで、右クリックのコンテキストメニューには「Revel in Side Bar」というアイテムを発見した!これを実行すると、今のファイルがSideBarのフォーカスアイテムになります。
  • なるほど!このコマンドをファイルが切り替えられる時点で呼び出せば行けぞう!
  • SideBarEnhancementsの機能かな、と思って、ソースを検索してみたら、ない!
  • じゃ、標準機能みたいね。「Reveal in Side Bar」文言でPackages\Defaultを検索してみたら、あった!
    9      { "command": "open_dir", "args": {"dir": "$file_path", "file": "$file_name"}, "caption": "Open Containing Folder…" },
   10      { "command": "copy_path", "caption": "Copy File Path" },
   11:     { "command": "reveal_in_side_bar", "caption": "Reveal in Side Bar" },
   12      { "caption": "-", "id": "end" }
   13  ]
  • なるほど!コマンドはreveal_in_side_barですね。実装しよう!

実装過程

  • ファイルが切り替えられる度に実行したいので、sublime_plugin.EventListenerを継承
  • 実際のコードはは一行だけ!出来ました!おめでとうございます!
import sublime
import sublime_plugin
 
class AutoRevealInSideBar(sublime_plugin.EventListener):
    def on_activated(self, view):
        view.window().run_command("reveal_in_side_bar")
  • これで、ファイルを切り替える時、どんなに深い階層にあるファイルであっても、ちゃんとSideBarにフォーカスアイテムになるはずです。

まとめ

  • Sublime Text 2自体の機能もいろいろコマンドになったりしますので、既存の機能を呼び出したい場合は、まずPackages\Defaultの中を調べましょう
  • プラグインを作るのはすっごく簡単です。どんどんやってみましょう!