Exemple #1
0
	def evaluate_settings(self):
		# validate final project directory (by settings)
		project_directory = os.path.join(self.directory, self.get_setting("PROJECT_DIRECTORY"))
		if os.path.exists(project_directory):
			self.project_directory = Path.posix(project_directory)
		else:
			self.project_directory = Path.posix(self.directory)
			warn(ID, "project directory in settings in not a valid folder")

		# setup project cache
		triggers = self.settings.get("scopes", self.get_setting("TRIGGER"))
		valid_file_extensions = get_valid_extensions(triggers)
		folders_to_exclude = self.get_setting("EXCLUDE_FOLDERS")

		self.filecache = FileCache(valid_file_extensions, folders_to_exclude, self.project_directory)

		# evaluate base directory
		self.base_directory = Validate.sanitize_base_directory(
			self.settings.get("BASE_DIRECTORY", ""),
			self.project_directory,
			self.directory
		)

		verbose(ID, "new project created", self.project_directory)
		verbose(ID, "Base directory at", "'" + self.base_directory + "'")
def get_file_cache(folder):
    if not folder in file_caches:
        valid_file_extensions = get_valid_extensions(settings.get("trigger"))
        logger.verbose(ID, "Build cache for " + folder + " (",
                       valid_file_extensions, ") excluding",
                       settings.get("exclude_folders"))
        file_caches[folder] = FileCache(valid_file_extensions,
                                        settings.get("exclude_folders"),
                                        folder)

    return file_caches.get(folder)
Exemple #3
0
class Project():

	filecache = None

	def __init__(self, window, directory, project_settings, ffp_settings):
		"""
			Cache project files and manage project settings

			Parameters
			----
			window : Sublime.Window			- active window associated with project
			project_settings : Dictionary	- project settings (like project.settings.FuzzyFilePath)
			ffp_settings : Dictionary		- config merge with base settings, specified by sublime-settings
		"""
		self.window = window
		self.directory = directory
		self.update_settings(ffp_settings, project_settings)

	def update_settings(self, global_settings, project_settings):
		# create final settings object, by merging project specific settings with base settings
		settings = copy.deepcopy(global_settings)
		Settings.merge(settings, project_settings)
		self.settings = settings
		# sanitize settings
		self.evaluate_settings()

	def evaluate_settings(self):
		# validate final project directory (by settings)
		project_directory = os.path.join(self.directory, self.get_setting("PROJECT_DIRECTORY"))
		if os.path.exists(project_directory):
			self.project_directory = Path.posix(project_directory)
		else:
			self.project_directory = Path.posix(self.directory)
			warn(ID, "project directory in settings in not a valid folder")

		# setup project cache
		triggers = self.settings.get("scopes", self.get_setting("TRIGGER"))
		valid_file_extensions = get_valid_extensions(triggers)
		folders_to_exclude = self.get_setting("EXCLUDE_FOLDERS")

		self.filecache = FileCache(valid_file_extensions, folders_to_exclude, self.project_directory)

		# evaluate base directory
		self.base_directory = Validate.sanitize_base_directory(
			self.settings.get("BASE_DIRECTORY", ""),
			self.project_directory,
			self.directory
		)

		verbose(ID, "new project created", self.project_directory)
		verbose(ID, "Base directory at", "'" + self.base_directory + "'")

	def get_directory(self):
		return self.project_directory

	def get_base_directory(self):
		return self.base_directory

	def get_setting(self, key, default=None):
		return self.settings.get(key, default)

	def get_settings(self):
		return self.settings

	def set_setting(self, key, value):
		data = self.window.get_project_data()
		settings = data.get("settings").get("FuzzyFilePath")
		settings[key] = value
		self.window.set_project_data(data)
		# and update current settings
		self.settings[key] = value

	def rebuild_filecache(self):
		verbose(ID, "rebuild filecache of ", self.project_directory)
		return self.filecache.rebuild()

	def search_completions(self, needle, project_folder, valid_extensions, base_path=False):
		return self.filecache.search_completions(needle, project_folder, valid_extensions, base_path)

	def find_file(self, file_name):
		return self.filecache.find_file(file_name)