TextMateで最近更新したファイルを簡単に開く

またまた、TextMate w

ちょー簡単な機能を作ってみた.
プロジェクト内で最近更新されたファイルを開く機能.

マウスを使えば既にあるのだが...もっと簡単に開きたいと思って.

機能の詳細説明

  • ユーザはあるショートカットを押す
  • TextMateは、ポーップアップメニューを表示.最近更新した7つのファイルの中から1つ選択するようにユーザに促す.
  • ユーザは数字の1〜7を押す
  • TextMateは選択されたファイルを開く.

実装

#!/usr/bin/env ruby

def open_mate(path)
  %x["$TM_SUPPORT_PATH/bin/mate" "#{path}"]
end

def open_from_menu(choices)
  $: << "#{ENV["TM_SUPPORT_PATH"]}/lib" if ENV.has_key? "TM_SUPPORT_PATH"
  require "exit_codes"
  require "ui"
  view_choices = choices.map { |path| 
    dir_base = File.split(path)
    "#{ dir_base[1] }"
  }
  choice  = TextMate::UI.menu(view_choices)
  exit if choice.nil?
  open_mate(choices[choice])
end

def select_recent(root)
  Dir.glob("#{ root }/**/*.*").sort_by {|f| File.mtime(f)}.reverse[0..6]
end
open_from_menu(select_recent(ENV["TM_PROJECT_DIRECTORY"]))

Ruby実行で確認後、BundleのCommand化
簡単だが.かなり強力.
ペアを開くやつは、specを書きながらじゃないとむずかしいけど、こいつなら、手軽につくれた.

もっと頑張れば、SVNでHEADとdiffがでたファイルの一覧メニュー => 行一覧メニュー => 指定されたファイルの行を開く
のナビゲーションてのも、つくれるんじゃないかな?

とりあえず.TODO化
@TODO: Diffがでたファイル一覧を取得できること
@TODO: あるショートカットを押すと、Diffがでたファイル一覧がメニュー表示され、選択するとファイルが開けること
@TODO: ペアがない場合はファイルを新規作成ができるようにすること