40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
import sublime
|
|
import sublime_plugin
|
|
from related import *
|
|
|
|
|
|
class RelatedFilesCommand(sublime_plugin.WindowCommand):
|
|
def run(self, index=None):
|
|
active_file_path = self.__active_file_path()
|
|
|
|
if active_file_path:
|
|
# Builds a list of related files for the current open file.
|
|
self.__related = Related(active_file_path, self.__patterns(), sublime.active_window().folders())
|
|
|
|
self.window.show_quick_panel(self.__related.descriptions(), self.__open_file)
|
|
else:
|
|
self.__status_msg("No open files")
|
|
|
|
# Opens the file in path.
|
|
def __open_file(self, index):
|
|
if index >= 0:
|
|
self.window.open_file(self.__related.files()[index])
|
|
else:
|
|
self.__status_msg("No related files found")
|
|
|
|
# Retrieves the patterns from settings.
|
|
def __patterns(self):
|
|
return sublime.load_settings("RelatedFiles.sublime-settings").get('patterns')
|
|
|
|
# Returns the activelly open file path from sublime.
|
|
def __active_file_path(self):
|
|
if self.window.active_view():
|
|
file_path = self.window.active_view().file_name()
|
|
|
|
if file_path and len(file_path) > 0:
|
|
return file_path
|
|
|
|
# Displays a status message on sublime.
|
|
def __status_msg(self, message):
|
|
sublime.status_message(message)
|