41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
import sublime_plugin
|
|
import os
|
|
|
|
class RecentActiveFilesEventListener(sublime_plugin.EventListener):
|
|
def on_activated(self, view):
|
|
if view.file_name():
|
|
view.window().run_command("recent_active_files", { "file_name": view.file_name() })
|
|
|
|
class RecentActiveFilesCommand(sublime_plugin.WindowCommand):
|
|
def __init__(self, window):
|
|
sublime_plugin.WindowCommand.__init__(self, window)
|
|
self.recent_active_files = []
|
|
|
|
def unshift(self, file_name):
|
|
if file_name in self.recent_active_files:
|
|
self.recent_active_files.remove(file_name)
|
|
self.recent_active_files.insert(0, file_name)
|
|
|
|
def path_form_project(self, path):
|
|
for folder in self.window.folders():
|
|
path = path.replace(folder + '/', '', 1)
|
|
return path
|
|
|
|
def run(self, file_name=None):
|
|
if file_name:
|
|
self.unshift(file_name)
|
|
else:
|
|
if self.window.active_view() is not None:
|
|
active_file = self.window.active_view().file_name()
|
|
files = filter(lambda f: f != active_file, self.recent_active_files)
|
|
else:
|
|
files = self.recent_active_files
|
|
|
|
items = [[os.path.basename(f), self.path_form_project(f)] for f in files]
|
|
|
|
def on_done(index):
|
|
if index >= 0:
|
|
self.window.open_file(files[index])
|
|
|
|
self.window.show_quick_panel(items, on_done)
|