require File.dirname(__FILE__) + '/open_from_menu'
include Mate::OpenFromMenu
module Mate
class OpenRecent
include Mate::OpenFromMenu
def initialize(config = {
:project_dir => ENV["TM_PROJECT_DIRECTORY"],
:selected_file => ENV["TM_SELECTED_FILE"],
})
@conf = config
end
def open_recent()
open_from_menu(
Dir.glob("#{ @conf[:project_dir] }/**/*").
sort_by { |f| File.mtime(f) }.
reverse[0..7].
select { |e| e != @conf[:selected_file] }.
# collect [view_name, path_name]
collect{ |e| dir_base = File.split(e); [dir_base[1], e]}
)
end
end
end
$: << "#{ENV["TM_SUPPORT_PATH"]}/lib" if ENV.has_key? "TM_SUPPORT_PATH"
require "exit_codes"
require "ui"
module Mate
module OpenFromMenu
View, Path = 0, 1
def open_mate(path)
%x["$TM_SUPPORT_PATH/bin/mate" "#{path}"]
end
def open_from_menu(view_paths)
views = view_paths.collect { |view_path|
view_path[View]
}
choice = TextMate::UI.menu(views)
exit if choice.nil?
open_mate(view_paths[choice][Path])
end
end
end
ついでにSVNステータスから開く
require File.dirname(__FILE__) + '/open_from_menu'
$open_menu_cofing = {
:project_dir => ENV["TM_PROJECT_DIRECTORY"],
:svn_status => %s[%x{ "cd" "$TM_PROJECT_DIRECTORY"
"/usr/local/bin/svn" "status"}],
:selected_file => ENV["TM_SELECTED_FILE"],
}
module Mate
class OpenBySvnStatus
include Mate::OpenFromMenu
def initialize(config = $open_menu_cofing)
@conf = config
end
def open
items = instance_eval("#{@conf[:svn_status]}").
split(/\n/).
collect { |e| e.split(/\s+/) }.
# collect example ["M : hoge/foo.txt", "/usr/home/hoge/foo.txt"
collect { |e| [ e[0] + " :\t" + e[1], @conf[:project_dir] + "/" + e[1] ] }
print "no select item [svn status]" if items.size == 0
open_from_menu(items)
end
end
end